@decisiv/ui-components 2.0.1-alpha.143 → 2.0.1-alpha.144
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.
- package/lib/components/SearchInput/index.d.ts +1 -1
- package/lib/components/SearchInput/index.d.ts.map +1 -1
- package/lib/components/SearchInput/index.js +29 -16
- package/lib/components/SearchInput/index.test.js +69 -0
- package/lib/components/SearchInput/schema.d.ts.map +1 -1
- package/lib/components/SearchInput/schema.js +2 -0
- package/lib/components/SearchInput/types.d.ts +2 -0
- package/lib/components/SearchInput/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -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;
|
|
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), (
|
|
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 (
|
|
100
|
-
var 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(
|
|
109
|
-
var onSearch =
|
|
110
|
-
value =
|
|
111
|
-
onChange =
|
|
112
|
-
size =
|
|
113
|
-
disabled =
|
|
114
|
-
|
|
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,
|
|
143
|
-
|
|
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;
|
|
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;
|
|
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.
|
|
3
|
+
"version": "2.0.1-alpha.144+5fb644e",
|
|
4
4
|
"description": "Decisiv's design system React components",
|
|
5
5
|
"author": "Decisiv UI Development Team",
|
|
6
6
|
"license": "MIT",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"access": "public"
|
|
72
72
|
},
|
|
73
73
|
"private": false,
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "5fb644e81efa4fc03869b1c9814a4b51c33af164"
|
|
75
75
|
}
|