@decisiv/ui-components 2.0.1-alpha.143 → 2.0.1-alpha.147

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.
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { SearchInputProps, SearchItem, StyledFlexProps } from './types';
3
- declare function SearchInput({ onSearch, value, onChange, size, disabled, ...props }: SearchInputProps): JSX.Element;
3
+ declare function SearchInput({ onSearch, value, onChange, size, disabled, searchOn, ...props }: SearchInputProps): JSX.Element;
4
4
  declare namespace SearchInput {
5
5
  var defaultProps: {
6
6
  size: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SearchInput/index.tsx"],"names":[],"mappings":";AAiBA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA6DxE,iBAAwB,WAAW,CAAC,EAClC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA+FhC;kBAtGuB,WAAW;;;;;eAAX,WAAW;AA4GnC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SearchInput/index.tsx"],"names":[],"mappings":";AAiBA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkExE,iBAAwB,WAAW,CAAC,EAClC,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,QAAmB,EACnB,GAAG,KAAK,EACT,EAAE,gBAAgB,GAAG,GAAG,CAAC,OAAO,CA0GhC;kBAlHuB,WAAW;;;;;eAAX,WAAW;AAwHnC,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC"}
@@ -55,6 +55,8 @@ var _types = require("./types");
55
55
 
56
56
  var _Input = _interopRequireDefault(require("../TextField/Input"));
57
57
 
58
+ var _useUpdateEffect = _interopRequireDefault(require("../../utils/useUpdateEffect"));
59
+
58
60
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
59
61
 
60
62
  function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
@@ -81,23 +83,26 @@ var StyledFlex = (0, _styledComponents.default)(_Flex.default).withConfig({
81
83
  var StyledBody = (0, _styledComponents.default)(_Flex.default).withConfig({
82
84
  displayName: "SearchInput__StyledBody",
83
85
  componentId: "sc-1lgi0sd-1"
84
- })(["flex:1;align-items:center;"]);
86
+ })(["flex:1;align-items:center;height:inherit;"]);
85
87
  var ButtonGroup = (0, _styledComponents.default)(_Flex.default).withConfig({
86
88
  displayName: "SearchInput__ButtonGroup",
87
89
  componentId: "sc-1lgi0sd-2"
88
- })(["margin-right:", ";cursor:default;"], function (_ref4) {
90
+ })(["align-items:center;margin-right:", ";cursor:default;"], function (_ref4) {
89
91
  var mediumSized = _ref4.mediumSized;
90
92
  return (0, _rem.default)(_spacing.default.base * (mediumSized ? 1 : 0.3));
91
93
  });
92
94
  var SearchIconWrapper = (0, _styledComponents.default)(_Flex.default).withConfig({
93
95
  displayName: "SearchInput__SearchIconWrapper",
94
96
  componentId: "sc-1lgi0sd-3"
95
- })(["color:", ";margin-right:", ";margin-left:", ";align-items:center;"], (0, _toColorString.default)(_color.default.base.alaskanHusky), (0, _rem.default)(_spacing.default.base * 1.5), (0, _rem.default)(_spacing.default.base * 0.5));
97
+ })(["color:", ";margin-right:", ";margin-left:", ";align-items:center;"], (0, _toColorString.default)(_color.default.base.alaskanHusky), (0, _rem.default)(_spacing.default.base * 1.5), function (_ref5) {
98
+ var inputSize = _ref5.inputSize;
99
+ return inputSize === 'small' ? 0 : (0, _rem.default)(_spacing.default.base * 0.5);
100
+ });
96
101
  var TimesIconWrapper = (0, _styledComponents.default)(_Flex.default).withConfig({
97
102
  displayName: "SearchInput__TimesIconWrapper",
98
103
  componentId: "sc-1lgi0sd-4"
99
- })(["visibility:", ";margin-right:", ";color:", ";align-items:center;border:1px solid transparent;border-radius:2px;&:hover{color:", ";}&:focus{outline:none;border:1px solid ", ";", "}"], function (_ref5) {
100
- var visible = _ref5.visible;
104
+ })(["height:inherit;visibility:", ";margin-right:", ";color:", ";align-items:center;border:1px solid transparent;border-radius:2px;&:hover{color:", ";}&:focus{outline:none;border:1px solid ", ";", "}"], function (_ref6) {
105
+ var visible = _ref6.visible;
101
106
  return visible ? 'visible' : 'hidden';
102
107
  }, (0, _rem.default)(_spacing.default.base), (0, _toColorString.default)(_color.default.interaction.pacificOcean), (0, _toColorString.default)(_color.default.status.danger.medium), (0, _toColorString.default)(_color.default.interaction.pacificOcean), (0, _focusRingWithColor.default)(_color.default.interaction.pacificOcean40));
103
108
  var StyledInput = (0, _styledComponents.default)(_Input.default).withConfig({
@@ -105,13 +110,15 @@ var StyledInput = (0, _styledComponents.default)(_Input.default).withConfig({
105
110
  componentId: "sc-1lgi0sd-5"
106
111
  })(["padding:0;color:", ";"], (0, _toColorString.default)(_color.default.base.charcoal));
107
112
 
108
- function SearchInput(_ref6) {
109
- var onSearch = _ref6.onSearch,
110
- value = _ref6.value,
111
- onChange = _ref6.onChange,
112
- size = _ref6.size,
113
- disabled = _ref6.disabled,
114
- props = _objectWithoutProperties(_ref6, ["onSearch", "value", "onChange", "size", "disabled"]);
113
+ function SearchInput(_ref7) {
114
+ var onSearch = _ref7.onSearch,
115
+ value = _ref7.value,
116
+ onChange = _ref7.onChange,
117
+ size = _ref7.size,
118
+ disabled = _ref7.disabled,
119
+ _ref7$searchOn = _ref7.searchOn,
120
+ searchOn = _ref7$searchOn === void 0 ? 'submit' : _ref7$searchOn,
121
+ props = _objectWithoutProperties(_ref7, ["onSearch", "value", "onChange", "size", "disabled", "searchOn"]);
115
122
 
116
123
  var translate = (0, _useTranslations.default)();
117
124
  var handleSearch = (0, _react.useCallback)(function () {
@@ -129,9 +136,15 @@ function SearchInput(_ref6) {
129
136
  var handleKeyPress = (0, _react.useCallback)(function (event) {
130
137
  if (event.key === 'Enter') handleSearch();
131
138
  }, [handleSearch]);
139
+ (0, _useUpdateEffect.default)(function () {
140
+ if (searchOn === 'change') {
141
+ handleSearch();
142
+ }
143
+ }, [searchOn, value]);
144
+ var renderLeftIcon = searchOn === 'change' || searchOn === 'submit' && mediumSized;
132
145
  return _react.default.createElement(StyledFlex, {
133
- mediumSized: mediumSized,
134
146
  flex: 1,
147
+ mediumSized: mediumSized,
135
148
  "data-testid": "search-container"
136
149
  }, _react.default.createElement(_InputField.default, _extends({
137
150
  label: "",
@@ -139,8 +152,8 @@ function SearchInput(_ref6) {
139
152
  disabled: disabled,
140
153
  value: value
141
154
  }, props), function (p) {
142
- return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(StyledBody, null, mediumSized && _react.default.createElement(SearchIconWrapper, {
143
- disabled: mediumSized
155
+ return _react.default.createElement(_react.default.Fragment, null, _react.default.createElement(StyledBody, null, renderLeftIcon && _react.default.createElement(SearchIconWrapper, {
156
+ inputSize: size
144
157
  }, _react.default.createElement(_Search.default, {
145
158
  size: "medium",
146
159
  "data-testid": "search-icon"
@@ -160,7 +173,7 @@ function SearchInput(_ref6) {
160
173
  }, _react.default.createElement(_Times.default, {
161
174
  size: "small"
162
175
  }))
163
- }, translate(undefined, 'searchInput.clear')), _react.default.createElement(_Button.default, {
176
+ }, translate(undefined, 'searchInput.clear')), searchOn === 'submit' && _react.default.createElement(_Button.default, {
164
177
  "aria-label": "Search",
165
178
  tabIndex: 0,
166
179
  disabled: disabled || !hasText,
@@ -345,4 +345,73 @@ describe('Search input', function () {
345
345
  }
346
346
  }, _callee11);
347
347
  })));
348
+ describe('when using the searchOn `change`', function () {
349
+ var searchOn = 'change';
350
+ it('renders the search icon when size is "small"', function () {
351
+ var container = render(_react.default.createElement(_.default, {
352
+ searchOn: "change",
353
+ value: "",
354
+ onChange: onChangeMock,
355
+ size: "small"
356
+ }));
357
+ expect(container.getByTestId('search-icon')).toBeInTheDocument();
358
+ });
359
+ it('renders the search icon when size is "medium"', function () {
360
+ var container = render(_react.default.createElement(_.default, {
361
+ searchOn: "change",
362
+ value: "",
363
+ onChange: onChangeMock,
364
+ size: "medium"
365
+ }));
366
+ expect(container.getByTestId('search-icon')).toBeInTheDocument();
367
+ });
368
+ it('does not render the submit search button', function () {
369
+ var _render = render(_react.default.createElement(_.default, {
370
+ value: "search value",
371
+ searchOn: searchOn,
372
+ onChange: onChangeMock,
373
+ onSearch: onSearchMock
374
+ })),
375
+ queryByRole = _render.queryByRole;
376
+
377
+ expect(queryByRole('button')).not.toBeInTheDocument();
378
+ });
379
+ it('triggers the onSearch function when changing the value of the component', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12() {
380
+ var container, searchInput;
381
+ return regeneratorRuntime.wrap(function _callee12$(_context12) {
382
+ while (1) {
383
+ switch (_context12.prev = _context12.next) {
384
+ case 0:
385
+ container = render(_react.default.createElement(_.default, {
386
+ searchOn: searchOn,
387
+ value: "Searched value",
388
+ onChange: onChangeMock,
389
+ onSearch: onSearchMock
390
+ }));
391
+ _context12.next = 3;
392
+ return container.findByTestId('search-container');
393
+
394
+ case 3:
395
+ _context12.next = 5;
396
+ return _context12.sent.querySelector('input');
397
+
398
+ case 5:
399
+ searchInput = _context12.sent;
400
+
401
+ _react2.fireEvent.change(searchInput, {
402
+ target: {
403
+ value: 'some value'
404
+ }
405
+ });
406
+
407
+ expect(onChangeMock).toHaveBeenCalled();
408
+
409
+ case 8:
410
+ case "end":
411
+ return _context12.stop();
412
+ }
413
+ }
414
+ }, _callee12);
415
+ })));
416
+ });
348
417
  });
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/SearchInput/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAA2C,CAAC;AAwBxD,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/SearchInput/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,KAA2C,CAAC;AAkCxD,eAAe,MAAM,CAAC"}
@@ -12,6 +12,8 @@ var schema = (0, _reactDesc.describe)({
12
12
  displayName: 'SearchInput'
13
13
  });
14
14
  schema.propTypes = {
15
+ searchOn: _reactDesc.PropTypes.oneOf(['change', 'submit']).description('Set the behavior when the onSearch function is called').defaultValue('submit'),
16
+ debounceTimeout: _reactDesc.PropTypes.number.description('The amount of ms to wait until onSearch is called after the user has typed in the search input').defaultValue('500'),
15
17
  size: _reactDesc.PropTypes.oneOf(['medium', 'small']).description('Controls the size of the search input.').defaultValue('medium'),
16
18
  disabled: _reactDesc.PropTypes.bool.description('Boolean indicating whether the search input is disabled.'),
17
19
  value: _reactDesc.PropTypes.string.description('A text value to be displayed on the input field'),
@@ -6,8 +6,10 @@ export interface SearchItem<T> {
6
6
  value: T;
7
7
  }
8
8
  export declare type Size = 'medium' | 'small';
9
+ export declare type SearchOn = 'submit' | 'change';
9
10
  export interface SearchInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'label'>, Omit<BaseInputFieldProps, 'children' | 'onClick' | 'label'> {
10
11
  zIndex?: number;
12
+ searchOn?: SearchOn;
11
13
  onSearch?: (value: string) => void;
12
14
  onSelectItem?: (value: any) => void;
13
15
  onBlur?: React.FocusEventHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/SearchInput/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;CACV;AAED,oBAAY,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtC,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,EACzE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAClC,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC;IACvC,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;IACxE,kBAAkB,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/SearchInput/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,CAAC;CACV;AAED,oBAAY,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC;AACtC,oBAAY,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE3C,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,EACzE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC;IAClC,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC;IACvC,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;IACxE,kBAAkB,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decisiv/ui-components",
3
- "version": "2.0.1-alpha.143+69b8e4a",
3
+ "version": "2.0.1-alpha.147+c2bdf72",
4
4
  "description": "Decisiv's design system React components",
5
5
  "author": "Decisiv UI Development Team",
6
6
  "license": "MIT",
@@ -17,7 +17,7 @@
17
17
  "dependencies": {
18
18
  "@decisiv/breakpoint-observer": "^1.8.8",
19
19
  "@decisiv/design-tokens": "^1.8.8",
20
- "@decisiv/iconix": "^2.0.0",
20
+ "@decisiv/iconix": "^2.0.1-alpha.147+c2bdf72",
21
21
  "@decisiv/prop-types": "^1.6.9",
22
22
  "@seznam/compose-react-refs": "^1.0.2",
23
23
  "csstype": "^2.6.5",
@@ -71,5 +71,5 @@
71
71
  "access": "public"
72
72
  },
73
73
  "private": false,
74
- "gitHead": "69b8e4afa501944214740b4e6578349f5cfbba14"
74
+ "gitHead": "c2bdf72da4ad2edd11813d2e484c0ad1c7ae076b"
75
75
  }