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

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 (52) hide show
  1. package/lib/atoms/BooleanInput/index.d.ts.map +1 -1
  2. package/lib/atoms/BooleanInput/index.js +19 -2
  3. package/lib/atoms/BooleanInput/index.test.js +17 -6
  4. package/lib/atoms/BooleanInput/types.d.ts +2 -0
  5. package/lib/atoms/BooleanInput/types.d.ts.map +1 -1
  6. package/lib/atoms/InputField/index.js +1 -1
  7. package/lib/atoms/OptionsList/Option.js +2 -2
  8. package/lib/atoms/OptionsList/index.test.js +77 -14
  9. package/lib/atoms/RequiredIcon.d.ts +9 -0
  10. package/lib/atoms/RequiredIcon.d.ts.map +1 -0
  11. package/lib/atoms/{InputField/RequiredIcon.js → RequiredIcon.js} +7 -3
  12. package/lib/components/Checkbox/index.d.ts.map +1 -1
  13. package/lib/components/Checkbox/index.js +3 -1
  14. package/lib/components/Checkbox/schema.d.ts.map +1 -1
  15. package/lib/components/Checkbox/schema.js +2 -0
  16. package/lib/components/Combobox/index.d.ts.map +1 -1
  17. package/lib/components/Combobox/index.js +27 -18
  18. package/lib/components/Combobox/index.test.js +172 -52
  19. package/lib/components/Filter/IconWrapper/index.d.ts +197 -0
  20. package/lib/components/Filter/IconWrapper/index.d.ts.map +1 -0
  21. package/lib/components/Filter/IconWrapper/index.js +35 -0
  22. package/lib/components/Filter/SimplePrimary/index.d.ts +31 -0
  23. package/lib/components/Filter/SimplePrimary/index.d.ts.map +1 -0
  24. package/lib/components/Filter/SimplePrimary/index.js +58 -0
  25. package/lib/components/Filter/SimplePrimary/index.test.js +34 -0
  26. package/lib/components/Filter/StyledFilter.d.ts +4 -0
  27. package/lib/components/Filter/StyledFilter.d.ts.map +1 -0
  28. package/lib/components/Filter/StyledFilter.js +39 -0
  29. package/lib/components/Filter/StyledLabel/index.d.ts +8 -0
  30. package/lib/components/Filter/StyledLabel/index.d.ts.map +1 -0
  31. package/lib/components/Filter/StyledLabel/index.js +30 -0
  32. package/lib/components/Filter/index.d.ts +27 -0
  33. package/lib/components/Filter/index.d.ts.map +1 -0
  34. package/lib/components/Filter/index.js +95 -0
  35. package/lib/components/Filter/index.test.js +41 -0
  36. package/lib/components/Filter/kind.d.ts +6 -0
  37. package/lib/components/Filter/kind.d.ts.map +1 -0
  38. package/lib/components/Filter/kind.js +45 -0
  39. package/lib/components/Filter/schema.d.ts +9 -0
  40. package/lib/components/Filter/schema.d.ts.map +1 -0
  41. package/lib/components/Filter/schema.js +32 -0
  42. package/lib/components/Filter/types.d.ts +17 -0
  43. package/lib/components/Filter/types.d.ts.map +1 -0
  44. package/lib/components/Filter/types.js +1 -0
  45. package/lib/components/index.d.ts +1 -0
  46. package/lib/components/index.d.ts.map +1 -1
  47. package/lib/components/index.js +9 -0
  48. package/lib/providers/ConfigProvider/index.d.ts.map +1 -1
  49. package/lib/providers/ConfigProvider/index.js +5 -1
  50. package/package.json +2 -2
  51. package/lib/atoms/InputField/RequiredIcon.d.ts +0 -4
  52. package/lib/atoms/InputField/RequiredIcon.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/BooleanInput/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAKZ,sBAAsB,EACvB,MAAM,OAAO,CAAC;AASf,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9C,cAAc,SAAS,CAAC;AA+ExB,QAAA,MAAM,mBAAmB,EAAE,sBAAsB,CAC/C,YAAY,EACZ,KAAK,CACqB,CAAC;AAE7B,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atoms/BooleanInput/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAKZ,sBAAsB,EACvB,MAAM,OAAO,CAAC;AAaf,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE9C,cAAc,SAAS,CAAC;AAsGxB,QAAA,MAAM,mBAAmB,EAAE,sBAAsB,CAC/C,YAAY,EACZ,KAAK,CACqB,CAAC;AAE7B,eAAe,mBAAmB,CAAC"}
@@ -12,6 +12,12 @@ var _Check = _interopRequireDefault(require("@decisiv/iconix/lib/components/Chec
12
12
 
13
13
  var _Message = _interopRequireDefault(require("../../components/Message"));
14
14
 
15
+ var _Tooltip = _interopRequireDefault(require("../../components/Tooltip"));
16
+
17
+ var _RequiredIcon = _interopRequireDefault(require("../RequiredIcon"));
18
+
19
+ var _useTranslations = _interopRequireDefault(require("../../utils/useTranslations"));
20
+
15
21
  var _useUniqueId = _interopRequireDefault(require("../../utils/useUniqueId"));
16
22
 
17
23
  var _elements = require("./elements");
@@ -50,6 +56,8 @@ var BooleanInput = function BooleanInput(props, ref) {
50
56
  className = props.className,
51
57
  disabled = props.disabled,
52
58
  id = props.id,
59
+ required = props.required,
60
+ requiredMessageProp = props.requiredMessage,
53
61
  label = props.label,
54
62
  readOnly = props.readOnly,
55
63
  size = props.size,
@@ -57,7 +65,7 @@ var BooleanInput = function BooleanInput(props, ref) {
57
65
  inputRef = props.inputRef,
58
66
  providedType = props.type,
59
67
  warningMessage = props.warningMessage,
60
- rest = _objectWithoutProperties(props, ["aria-describedby", "className", "disabled", "id", "label", "readOnly", "size", "status", "inputRef", "type", "warningMessage"]);
68
+ rest = _objectWithoutProperties(props, ["aria-describedby", "className", "disabled", "id", "required", "requiredMessage", "label", "readOnly", "size", "status", "inputRef", "type", "warningMessage"]);
61
69
 
62
70
  var type = !validTypes.includes(providedType) ? 'checkbox' : providedType;
63
71
  var uuid = (0, _useUniqueId.default)(id, 'input-');
@@ -67,6 +75,8 @@ var BooleanInput = function BooleanInput(props, ref) {
67
75
  var Mark = (0, _react.useMemo)(function () {
68
76
  return marks[type];
69
77
  }, [type]);
78
+ var translate = (0, _useTranslations.default)();
79
+ var requiredMessage = translate(requiredMessageProp, 'textField.requiredMessage');
70
80
  var warningMessageId = (0, _useUniqueId.default)(undefined, 'input-warning-', [warningMessage]);
71
81
  return _react.default.createElement(_elements.Container, {
72
82
  className: className,
@@ -78,6 +88,7 @@ var BooleanInput = function BooleanInput(props, ref) {
78
88
  warningMessage: warningMessage
79
89
  }, _react.default.createElement("input", _extends({}, rest, {
80
90
  "aria-describedby": warningMessage ? "".concat(ariaDescribedBy || '', " ").concat(warningMessageId) : ariaDescribedBy,
91
+ required: required,
81
92
  ref: inputRef,
82
93
  id: uuid,
83
94
  type: type // Checkbox/Radio inputs don't support read-only,
@@ -93,7 +104,13 @@ var BooleanInput = function BooleanInput(props, ref) {
93
104
  }, _react.default.createElement(_elements.StyledInput, null, _react.default.createElement(Mark, {
94
105
  size: size === 'small' ? 'small' : 'medium',
95
106
  "aria-hidden": true
96
- })), text && _react.default.createElement("span", null, text)), warningMessage && _react.default.createElement(_Message.default, {
107
+ })), text && _react.default.createElement("span", null, text, required && _react.default.createElement(_Tooltip.default, {
108
+ placement: "top",
109
+ target: _react.default.createElement(_RequiredIcon.default, {
110
+ marginTop: "-3px",
111
+ "aria-label": requiredMessage
112
+ })
113
+ }, requiredMessage))), warningMessage && _react.default.createElement(_Message.default, {
97
114
  id: warningMessageId,
98
115
  intent: "warning"
99
116
  }, warningMessage));
@@ -95,35 +95,46 @@ describe('BooleanInput', function () {
95
95
  var input = container.querySelector('input');
96
96
  expect(input.checked).toBe(true);
97
97
  });
98
- it('renders correctly with status warning', function () {
98
+ it('renders correctly when required', function () {
99
99
  var _render8 = (0, _react2.render)(_react.default.createElement(_.default, {
100
100
  id: "input",
101
101
  type: type,
102
- status: "warning"
102
+ required: true,
103
+ label: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
103
104
  })),
104
105
  container = _render8.container;
105
106
 
106
107
  expect(container).toMatchSnapshot();
107
108
  });
108
- it('renders correctly with a warning message', function () {
109
+ it('renders correctly with status warning', function () {
109
110
  var _render9 = (0, _react2.render)(_react.default.createElement(_.default, {
110
111
  id: "input",
111
112
  type: type,
112
- warningMessage: "warning message"
113
+ status: "warning"
113
114
  })),
114
115
  container = _render9.container;
115
116
 
116
117
  expect(container).toMatchSnapshot();
117
118
  });
119
+ it('renders correctly with a warning message', function () {
120
+ var _render10 = (0, _react2.render)(_react.default.createElement(_.default, {
121
+ id: "input",
122
+ type: type,
123
+ warningMessage: "warning message"
124
+ })),
125
+ container = _render10.container;
126
+
127
+ expect(container).toMatchSnapshot();
128
+ });
118
129
  });
119
130
  });
120
131
  it('falls back to type "checkbox" when provided an invalid type', function () {
121
- var _render10 = (0, _react2.render)( // @ts-ignore invalid type
132
+ var _render11 = (0, _react2.render)( // @ts-ignore invalid type
122
133
  _react.default.createElement(_.default, {
123
134
  type: "foo",
124
135
  "data-testid": "input"
125
136
  })),
126
- getByTestId = _render10.getByTestId;
137
+ getByTestId = _render11.getByTestId;
127
138
 
128
139
  expect(getByTestId('input').getAttribute('type')).toBe('checkbox');
129
140
  });
@@ -8,6 +8,8 @@ export interface Props extends BaseProps {
8
8
  inputRef?: Ref<InputRef>;
9
9
  label?: string;
10
10
  readOnly?: boolean;
11
+ required?: boolean;
12
+ requiredMessage?: string;
11
13
  ref?: Ref<ContainerRef>;
12
14
  size?: 'normal' | 'small';
13
15
  status?: 'normal' | 'warning';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/atoms/BooleanInput/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEtD,oBAAY,QAAQ,GAAG,gBAAgB,CAAC;AACxC,oBAAY,YAAY,GAAG,cAAc,CAAC;AAE1C,aAAK,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;AAEjE,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/atoms/BooleanInput/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAEtD,oBAAY,QAAQ,GAAG,gBAAgB,CAAC;AACxC,oBAAY,YAAY,GAAG,cAAc,CAAC;AAE1C,aAAK,SAAS,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;AAEjE,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB"}
@@ -29,7 +29,7 @@ var _Containers = require("./Containers");
29
29
 
30
30
  var _InputLabel = _interopRequireDefault(require("./InputLabel"));
31
31
 
32
- var _RequiredIcon = _interopRequireDefault(require("./RequiredIcon"));
32
+ var _RequiredIcon = _interopRequireDefault(require("../RequiredIcon"));
33
33
 
34
34
  var _HelpMessage = _interopRequireDefault(require("./HelpMessage"));
35
35
 
@@ -138,8 +138,8 @@ function Option(props) {
138
138
  updateActiveId(disabled ? '' : id);
139
139
  }, [setInputMethod, updateActiveId, disabled, id]);
140
140
  var handleClick = (0, _react.useCallback)(function () {
141
- toggleItemSelection(id);
142
- }, [toggleItemSelection, id]);
141
+ if (!disabled) toggleItemSelection(id);
142
+ }, [toggleItemSelection, id, disabled]);
143
143
  var LabelWrapper = (0, _react.useMemo)(function () {
144
144
  return function (_ref2) {
145
145
  var children = _ref2.children;
@@ -41,6 +41,8 @@ var item0Id = '0';
41
41
  var item0Label = 'Option 0';
42
42
  var item2Id = '2';
43
43
  var item2Label = 'Option 2';
44
+ var disabledItemLabel = 'Option 4';
45
+ var disabledItemId = '4';
44
46
  var items = [{
45
47
  id: item0Id,
46
48
  label: item0Label,
@@ -75,8 +77,8 @@ var items = [{
75
77
  }, {
76
78
  label: 'Category 2',
77
79
  items: [{
78
- id: '4',
79
- label: 'Option 4',
80
+ id: disabledItemId,
81
+ label: disabledItemLabel,
80
82
  value: '4',
81
83
  disabled: true
82
84
  }, {
@@ -189,15 +191,58 @@ describe('OptionsList', function () {
189
191
  expect(onChange).toHaveBeenCalledWith(selectedItem.id);
190
192
  expect(getByLabelText(selectedItem.label)).toBeChecked();
191
193
  });
194
+ describe('selecting disabled element with keyboard', function () {
195
+ it('selects an item with Enter or Space key', function () {
196
+ var onChange = jest.fn();
197
+ var onlyDisabledItems = [{
198
+ id: '2',
199
+ label: 'Option 2',
200
+ value: '2',
201
+ disabled: true
202
+ }, {
203
+ id: disabledItemId,
204
+ label: disabledItemLabel,
205
+ value: '4',
206
+ disabled: true
207
+ }];
208
+
209
+ var _render5 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
210
+ items: onlyDisabledItems,
211
+ onChange: onChange
212
+ }))),
213
+ getByLabelText = _render5.getByLabelText,
214
+ container = _render5.container;
215
+
216
+ var optionsList = container.querySelector('ul'); // simulate it is focused while tabbing
217
+
218
+ _react2.fireEvent.keyDown(container, {
219
+ key: 'Tab'
220
+ });
221
+
222
+ _react2.fireEvent.focus(optionsList);
223
+
224
+ _react2.fireEvent.keyDown(optionsList, {
225
+ key: 'ArrowDown'
226
+ });
227
+
228
+ _react2.fireEvent.keyDown(optionsList, {
229
+ key: 'Enter'
230
+ });
231
+
232
+ expect(onChange).not.toHaveBeenCalledWith(disabledItemId);
233
+ expect(onChange).not.toHaveBeenCalled();
234
+ expect(getByLabelText(disabledItemLabel)).not.toBeChecked();
235
+ });
236
+ });
192
237
  describe('single selection', function () {
193
238
  it('calls onChange with id when item is clicked', function () {
194
239
  var onChange = jest.fn();
195
240
 
196
- var _render5 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
241
+ var _render6 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
197
242
  onChange: onChange
198
243
  }))),
199
- getByText = _render5.getByText,
200
- getByLabelText = _render5.getByLabelText;
244
+ getByText = _render6.getByText,
245
+ getByLabelText = _render6.getByLabelText;
201
246
 
202
247
  var item = items[0];
203
248
 
@@ -212,15 +257,33 @@ describe('OptionsList', function () {
212
257
 
213
258
  expect(getByLabelText(subItem.label)).toBeChecked();
214
259
  });
260
+ describe('disabled element', function () {
261
+ it('does not calls onChange when item is clicked', function () {
262
+ var onChange = jest.fn();
263
+
264
+ var _render7 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
265
+ onChange: onChange
266
+ }))),
267
+ getByText = _render7.getByText,
268
+ getByLabelText = _render7.getByLabelText;
269
+
270
+ _react2.fireEvent.click(getByText(disabledItemLabel));
271
+
272
+ expect(onChange).not.toHaveBeenLastCalledWith(disabledItemId);
273
+ expect(onChange).not.toHaveBeenCalled(); // the item shouldn't be marked as selected
274
+
275
+ expect(getByLabelText(disabledItemLabel)).not.toBeChecked();
276
+ });
277
+ });
215
278
  describe('controlled', function () {
216
279
  it('prefers value over internal', function () {
217
280
  var selected = items[1];
218
281
 
219
- var _render6 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
282
+ var _render8 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
220
283
  selected: selected.id
221
284
  }))),
222
- getByText = _render6.getByText,
223
- getByLabelText = _render6.getByLabelText;
285
+ getByText = _render8.getByText,
286
+ getByLabelText = _render8.getByLabelText;
224
287
 
225
288
  var item = items[0];
226
289
 
@@ -235,12 +298,12 @@ describe('OptionsList', function () {
235
298
  it('calls onChange with array of selected ids when item is clicked', function () {
236
299
  var onChange = jest.fn();
237
300
 
238
- var _render7 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
301
+ var _render9 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
239
302
  onChange: onChange,
240
303
  multiple: true
241
304
  }))),
242
- getByText = _render7.getByText,
243
- getByLabelText = _render7.getByLabelText;
305
+ getByText = _render9.getByText,
306
+ getByLabelText = _render9.getByLabelText;
244
307
 
245
308
  var item = items[0];
246
309
 
@@ -279,12 +342,12 @@ describe('OptionsList', function () {
279
342
  onClick: onClick
280
343
  }];
281
344
 
282
- var _render8 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
345
+ var _render10 = render(_react.default.createElement(_.default, _extends({}, defaultProps, {
283
346
  actions: actions,
284
347
  multiple: true
285
348
  }))),
286
- baseElement = _render8.baseElement,
287
- getByText = _render8.getByText;
349
+ baseElement = _render10.baseElement,
350
+ getByText = _render10.getByText;
288
351
 
289
352
  actions.forEach(function (_ref5) {
290
353
  var label = _ref5.text;
@@ -0,0 +1,9 @@
1
+ import { RefForwardingComponent, RefAttributes } from 'react';
2
+ interface Props {
3
+ marginLeft?: string;
4
+ marginTop?: string;
5
+ }
6
+ declare type RequiredIconType = RefForwardingComponent<HTMLDivElement, RefAttributes<HTMLDivElement> & Props>;
7
+ declare const RequiredIcon: RequiredIconType;
8
+ export default RequiredIcon;
9
+ //# sourceMappingURL=RequiredIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequiredIcon.d.ts","sourceRoot":"","sources":["../../src/atoms/RequiredIcon.tsx"],"names":[],"mappings":"AACA,OAAc,EACZ,sBAAsB,EAGtB,aAAa,EACd,MAAM,OAAO,CAAC;AAOf,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD,aAAK,gBAAgB,GAAG,sBAAsB,CAC5C,cAAc,EACd,aAAa,CAAC,cAAc,CAAC,GAAG,KAAK,CACtC,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,gBASnB,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -21,10 +21,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
21
21
 
22
22
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
23
 
24
- var RequiredIconContainer = _styledComponents.default.span.withConfig({
24
+ var RequiredIconContainer = _styledComponents.default.div.withConfig({
25
25
  displayName: "RequiredIcon__RequiredIconContainer",
26
- componentId: "d5jm3s-0"
27
- })(["margin-left:5px;"]);
26
+ componentId: "sc-18pnvm5-0"
27
+ })(["display:inline;margin-left:", ";margin-top:", ";"], function (props) {
28
+ return props.marginLeft || '3px';
29
+ }, function (props) {
30
+ return props.marginTop || '0px';
31
+ });
28
32
 
29
33
  var RequiredIcon = (0, _react.forwardRef)(function (props, ref) {
30
34
  return _react.default.createElement(RequiredIconContainer, _extends({}, props, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAO,sBAAsB,EAAc,MAAM,OAAO,CAAC;AAGvE,OAAqB,EACnB,KAAK,IAAI,UAAU,EACnB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAElC,oBAAY,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAQ7C,QAAA,MAAM,eAAe,EAAE,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAEhE,CAAC;AAiBF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/index.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAO,sBAAsB,EAAc,MAAM,OAAO,CAAC;AAGvE,OAAqB,EACnB,KAAK,IAAI,UAAU,EACnB,YAAY,EACb,MAAM,0BAA0B,CAAC;AAElC,oBAAY,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAQ7C,QAAA,MAAM,eAAe,EAAE,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAEhE,CAAC;AAmBF,eAAe,eAAe,CAAC"}
@@ -33,13 +33,15 @@ CheckboxWithRef.propTypes = {
33
33
  label: _propTypes.default.string,
34
34
  disabled: _propTypes.default.bool,
35
35
  readOnly: _propTypes.default.bool,
36
+ required: _propTypes.default.bool,
36
37
  size: _propTypes.default.oneOf(['normal', 'small']),
37
38
  status: _propTypes.default.oneOf(['normal', 'warning']),
38
39
  warningMessage: _propTypes.default.string
39
40
  };
40
41
  CheckboxWithRef.defaultProps = {
41
42
  size: 'normal',
42
- status: 'normal'
43
+ status: 'normal',
44
+ required: false
43
45
  };
44
46
  var _default = CheckboxWithRef;
45
47
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAAwC,CAAC;AAgDrD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/Checkbox/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAAwC,CAAC;AA4DrD,eAAe,MAAM,CAAC"}
@@ -18,6 +18,8 @@ schema.propTypes = {
18
18
  defaultChecked: _reactDesc.PropTypes.bool.description('Whether or not the checkbox is initially checked. Use if you do not want to manually control the state.').defaultValue('false'),
19
19
  disabled: _reactDesc.PropTypes.bool.description('If the checkbox should be disabled and ignore user interactions.').defaultValue('false'),
20
20
  readOnly: _reactDesc.PropTypes.bool.description('Ignore user interactions, but still display the label in a readable manner.').defaultValue('false'),
21
+ required: _reactDesc.PropTypes.bool.description('Whether or not the checkbox should be required. Renders an indicator if true.').defaultValue('false'),
22
+ requiredMessage: _reactDesc.PropTypes.string.description('The text to display in the tooltip when hovering over the required icon. It displays "Required" by default').defaultValue('Required'),
21
23
  size: _reactDesc.PropTypes.oneOf(['normal', 'small']).description('Controls the size of the checkbox and label.').defaultValue('normal'),
22
24
  status: _reactDesc.PropTypes.oneOf(['normal', 'warning']).description('Whether or not to render the warning state.').defaultValue('normal'),
23
25
  warningMessage: _reactDesc.PropTypes.string.description('The warning message to display below the checkbox. If provided, the `status` prop is automatically set to `warning`.')
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Combobox/index.tsx"],"names":[],"mappings":"AAQA,OAAc,EAGZ,sBAAsB,EAQvB,MAAM,OAAO,CAAC;AA2Bf,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAQ,MAAM,SAAS,CAAC;AA+hBhE,QAAA,MAAM,eAAe,EAAE,sBAAsB,CAC3C,gBAAgB,EAChB,aAAa,CACS,CAAC;AAIzB,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Combobox/index.tsx"],"names":[],"mappings":"AASA,OAAc,EAGZ,sBAAsB,EAQvB,MAAM,OAAO,CAAC;AA2Bf,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAQ,MAAM,SAAS,CAAC;AAqiBhE,QAAA,MAAM,eAAe,EAAE,sBAAsB,CAC3C,gBAAgB,EAChB,aAAa,CACS,CAAC;AAIzB,eAAe,eAAe,CAAC"}
@@ -13,6 +13,8 @@ var _get = _interopRequireDefault(require("lodash/get"));
13
13
 
14
14
  var _union = _interopRequireDefault(require("lodash/union"));
15
15
 
16
+ var _isArray = _interopRequireDefault(require("lodash/isArray"));
17
+
16
18
  var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
17
19
 
18
20
  var _last = _interopRequireDefault(require("lodash/last"));
@@ -175,17 +177,38 @@ function Combobox(props, ref) {
175
177
  return !old;
176
178
  });
177
179
  }, [setIsPopoverVisibleState]);
180
+ /**
181
+ * This generates a flat list of the options (including those in categories)
182
+ * in the order they are presented in the dropdown list. Filtering disabled elements.
183
+ */
184
+
185
+ var flatOptions = (0, _react.useMemo)(function () {
186
+ return options.reduce(function (acc, curr) {
187
+ if ((0, _utils.isCategory)(curr)) {
188
+ var items = (0, _isArray.default)(curr.items) ? curr.items.filter(function (option) {
189
+ return !option.disabled;
190
+ }) : [];
191
+ return acc.concat(items);
192
+ }
193
+
194
+ if (!curr.disabled) {
195
+ return acc.concat(curr);
196
+ }
197
+
198
+ return acc;
199
+ }, []);
200
+ }, [options]);
178
201
  (0, _react.useEffect)(function () {
179
- // Set the "default" active ID to the first, if it exists.
180
- if (!(0, _isEmpty.default)(options) && !activeId) {
181
- setActiveId((0, _get.default)(options, '0.id'));
202
+ // Set the "default" active ID to the first in flatOptions, if it exists.
203
+ if (!(0, _isEmpty.default)(flatOptions) && !activeId) {
204
+ setActiveId((0, _get.default)(flatOptions, '0.id'));
182
205
  } // For async comboboxes, if the input is focused, the dropdown should be open.
183
206
 
184
207
 
185
208
  if (isFocused && variant === 'async' || multiple && internalInputValue !== '') {
186
209
  updateIsPopoverVisible(true);
187
210
  }
188
- }, [activeId, isFocused, options, variant, multiple, internalInputValue, updateIsPopoverVisible]); // The selectedValue is the id of the selectedOption, or an empty string if none selected.
211
+ }, [activeId, isFocused, flatOptions, variant, multiple, internalInputValue, updateIsPopoverVisible]); // The selectedValue is the id of the selectedOption, or an empty string if none selected.
189
212
 
190
213
  var _useState7 = (0, _react.useState)(!Array.isArray(propValue) && propValue || !Array.isArray(defaultValue) && defaultValue || undefined),
191
214
  _useState8 = _slicedToArray(_useState7, 2),
@@ -344,20 +367,6 @@ function Combobox(props, ref) {
344
367
  setIsFocused(true);
345
368
  onFocus && onFocus(event);
346
369
  }, [onFocus, updateIsPopoverVisible, variant]);
347
- /**
348
- * This generates a flat list of the options (including those in categories)
349
- * in the order they are presented in the dropdown list.
350
- */
351
-
352
- var flatOptions = (0, _react.useMemo)(function () {
353
- return options.reduce(function (acc, curr) {
354
- if ((0, _utils.isCategory)(curr)) {
355
- return acc.concat(curr.items);
356
- }
357
-
358
- return acc.concat(curr);
359
- }, []);
360
- }, [options]);
361
370
  /**
362
371
  * Pressing certain keys when focused on the Combobox component should trigger some actions.
363
372
  */