@decisiv/ui-components 2.0.1-alpha.139 → 2.0.1-alpha.142

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 (39) hide show
  1. package/lib/atoms/InputField/Containers.d.ts +2 -1
  2. package/lib/atoms/InputField/Containers.d.ts.map +1 -1
  3. package/lib/atoms/InputField/Containers.js +3 -1
  4. package/lib/atoms/InputField/index.d.ts +1 -0
  5. package/lib/atoms/InputField/index.d.ts.map +1 -1
  6. package/lib/atoms/InputField/index.js +5 -2
  7. package/lib/components/PasswordField/IconWrapper.d.ts +198 -0
  8. package/lib/components/PasswordField/IconWrapper.d.ts.map +1 -0
  9. package/lib/components/PasswordField/IconWrapper.js +32 -0
  10. package/lib/components/PasswordField/Input.d.ts +6 -0
  11. package/lib/components/PasswordField/Input.d.ts.map +1 -0
  12. package/lib/components/PasswordField/Input.js +28 -0
  13. package/lib/components/PasswordField/ShowPasswordButton.d.ts +8 -0
  14. package/lib/components/PasswordField/ShowPasswordButton.d.ts.map +1 -0
  15. package/lib/components/PasswordField/ShowPasswordButton.js +48 -0
  16. package/lib/components/PasswordField/index.d.ts +14 -0
  17. package/lib/components/PasswordField/index.d.ts.map +1 -0
  18. package/lib/components/PasswordField/index.js +95 -0
  19. package/lib/components/PasswordField/index.test.js +217 -0
  20. package/lib/components/PasswordField/schema.d.ts +3 -0
  21. package/lib/components/PasswordField/schema.d.ts.map +1 -0
  22. package/lib/components/PasswordField/schema.js +27 -0
  23. package/lib/components/SearchInput/index.d.ts +11 -0
  24. package/lib/components/SearchInput/index.d.ts.map +1 -0
  25. package/lib/components/SearchInput/index.js +177 -0
  26. package/lib/components/SearchInput/index.test.js +348 -0
  27. package/lib/components/SearchInput/schema.d.ts +3 -0
  28. package/lib/components/SearchInput/schema.d.ts.map +1 -0
  29. package/lib/components/SearchInput/schema.js +22 -0
  30. package/lib/components/SearchInput/types.d.ts +26 -0
  31. package/lib/components/SearchInput/types.d.ts.map +1 -0
  32. package/lib/components/SearchInput/types.js +5 -0
  33. package/lib/components/index.d.ts +2 -0
  34. package/lib/components/index.d.ts.map +1 -1
  35. package/lib/components/index.js +25 -0
  36. package/lib/providers/ConfigProvider/utils/translations.d.ts +10 -0
  37. package/lib/providers/ConfigProvider/utils/translations.d.ts.map +1 -1
  38. package/lib/providers/ConfigProvider/utils/translations.js +10 -0
  39. package/package.json +2 -2
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+
5
+ var _react2 = require("@testing-library/react");
6
+
7
+ var _ConfigProvider = require("../../providers/ConfigProvider");
8
+
9
+ var _ = _interopRequireDefault(require("."));
10
+
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+
13
+ 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); }
14
+
15
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
16
+
17
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
18
+
19
+ 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; }
20
+
21
+ 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; }
22
+
23
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
24
+
25
+ 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; }
26
+
27
+ // Prevent warnings about missing document methods (createRange, etc.)
28
+ jest.mock('popper.js', function () {
29
+ var _class, _temp;
30
+
31
+ var PopperJS = jest.requireActual('popper.js');
32
+ return _temp = _class = function _class() {
33
+ _classCallCheck(this, _class);
34
+
35
+ return {
36
+ destroy: function destroy() {},
37
+ scheduleUpdate: function scheduleUpdate() {}
38
+ };
39
+ }, _defineProperty(_class, "placements", PopperJS.placements), _temp;
40
+ });
41
+
42
+ var wrapper = function wrapper(_ref) {
43
+ var children = _ref.children;
44
+ return _react.default.createElement(_ConfigProvider.ConfigProvider, null, children);
45
+ };
46
+
47
+ var render = function render(ui, options) {
48
+ return (0, _react2.render)(ui, _objectSpread({}, options, {
49
+ wrapper: wrapper
50
+ }));
51
+ };
52
+
53
+ var defaultProps = {
54
+ id: 'text-field-1',
55
+ label: 'label',
56
+ name: 'name',
57
+ onChange: function onChange() {},
58
+ value: ''
59
+ };
60
+ describe('PasswordField', function () {
61
+ it('renders the password input', function () {
62
+ var props = _objectSpread({}, defaultProps, {
63
+ value: 'samplepasswd'
64
+ });
65
+
66
+ var container = render(_react.default.createElement(_.default, props));
67
+ expect(container.getByTestId('password-input')).toHaveAttribute('type', 'password');
68
+ });
69
+ it('shows the label "Password"', function () {
70
+ var props = _objectSpread({}, defaultProps, {
71
+ value: 'samplepasswd'
72
+ });
73
+
74
+ var container = render(_react.default.createElement(_.default, props));
75
+ expect(container.getByText('Password')).not.toBeNull();
76
+ });
77
+ it('does not show the label "Password" when hideLabel is true', function () {
78
+ var props = _objectSpread({}, defaultProps, {
79
+ value: 'samplepasswd',
80
+ hideLabel: true
81
+ });
82
+
83
+ var container = render(_react.default.createElement(_.default, props));
84
+ expect(container.queryByText('Password')).not.toBeVisible();
85
+ });
86
+ it('renders the input as a text-type input', function () {
87
+ var props = _objectSpread({}, defaultProps, {
88
+ value: 'samplepasswd',
89
+ initialPasswordVisible: true
90
+ });
91
+
92
+ var container = render(_react.default.createElement(_.default, props));
93
+ expect(container.getByTestId('password-input')).toHaveAttribute('type', 'text');
94
+ expect(container.queryByTestId('password-input')).not.toBeNull();
95
+ });
96
+ it('toggles the input type when the eye icon is clicked', function () {
97
+ var props = _objectSpread({}, defaultProps, {
98
+ value: 'samplepasswd'
99
+ });
100
+
101
+ var container = render(_react.default.createElement(_.default, props));
102
+ expect(container.getByTestId('password-input')).toHaveAttribute('type', 'password');
103
+
104
+ _react2.fireEvent.click(container.getByTestId('toggle-password-visible'));
105
+
106
+ expect(container.getByTestId('password-input')).toHaveAttribute('type', 'text');
107
+
108
+ _react2.fireEvent.click(container.getByTestId('toggle-password-visible'));
109
+
110
+ expect(container.getByTestId('password-input')).toHaveAttribute('type', 'password');
111
+ });
112
+ it('shows the eye icon when the password is hidden', function () {
113
+ var props = _objectSpread({}, defaultProps, {
114
+ value: 'samplepasswd'
115
+ });
116
+
117
+ var container = render(_react.default.createElement(_.default, props));
118
+ expect(container).toMatchSnapshot();
119
+ });
120
+ it('shows the eye slash icon when the password is visible', function () {
121
+ var props = _objectSpread({}, defaultProps, {
122
+ value: 'samplepasswd',
123
+ initialPasswordVisible: true
124
+ });
125
+
126
+ var container = render(_react.default.createElement(_.default, props));
127
+ expect(container).toMatchSnapshot();
128
+ });
129
+ it('toggle the eye button with the enter key', function () {
130
+ var props = _objectSpread({}, defaultProps, {
131
+ value: 'samplepasswd'
132
+ });
133
+
134
+ var container = render(_react.default.createElement(_.default, props));
135
+ expect(container.getByTestId('password-input')).toHaveAttribute('type', 'password');
136
+
137
+ _react2.fireEvent.keyPress(container.getByTestId('toggle-password-visible'), {
138
+ code: 'Enter',
139
+ key: 'Enter',
140
+ charCode: 13
141
+ });
142
+
143
+ expect(container.getByTestId('password-input')).toHaveAttribute('type', 'text');
144
+
145
+ _react2.fireEvent.keyPress(container.getByTestId('toggle-password-visible'), {
146
+ code: 'Enter',
147
+ key: 'Enter',
148
+ charCode: 13
149
+ });
150
+
151
+ expect(container.getByTestId('password-input')).toHaveAttribute('type', 'password');
152
+ });
153
+ it('shows the "Show Password" tooltip', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
154
+ var props, container;
155
+ return regeneratorRuntime.wrap(function _callee$(_context) {
156
+ while (1) {
157
+ switch (_context.prev = _context.next) {
158
+ case 0:
159
+ props = _objectSpread({}, defaultProps, {
160
+ value: 'samplepasswd'
161
+ });
162
+ container = render(_react.default.createElement(_.default, props));
163
+ _context.next = 4;
164
+ return _react2.fireEvent.focus(container.getByTestId('toggle-password-visible'), {
165
+ bubbles: true
166
+ });
167
+
168
+ case 4:
169
+ _context.t0 = expect;
170
+ _context.next = 7;
171
+ return container.findByText('Show Password');
172
+
173
+ case 7:
174
+ _context.t1 = _context.sent;
175
+ (0, _context.t0)(_context.t1).not.toBeNull();
176
+
177
+ case 9:
178
+ case "end":
179
+ return _context.stop();
180
+ }
181
+ }
182
+ }, _callee);
183
+ })));
184
+ it('shows the "Hide Password" tooltip', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
185
+ var props, container;
186
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
187
+ while (1) {
188
+ switch (_context2.prev = _context2.next) {
189
+ case 0:
190
+ props = _objectSpread({}, defaultProps, {
191
+ value: 'samplepasswd'
192
+ });
193
+ container = render(_react.default.createElement(_.default, _extends({}, props, {
194
+ initialPasswordVisible: true
195
+ })));
196
+ _context2.next = 4;
197
+ return _react2.fireEvent.focus(container.getByTestId('toggle-password-visible'), {
198
+ bubbles: true
199
+ });
200
+
201
+ case 4:
202
+ _context2.t0 = expect;
203
+ _context2.next = 7;
204
+ return container.findByText('Hide Password');
205
+
206
+ case 7:
207
+ _context2.t1 = _context2.sent;
208
+ (0, _context2.t0)(_context2.t1).not.toBeNull();
209
+
210
+ case 9:
211
+ case "end":
212
+ return _context2.stop();
213
+ }
214
+ }
215
+ }, _callee2);
216
+ })));
217
+ });
@@ -0,0 +1,3 @@
1
+ declare const schema: any;
2
+ export default schema;
3
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/components/PasswordField/schema.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,MAAM,KAA6C,CAAC;AAa1D,eAAe,MAAM,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _omit = _interopRequireDefault(require("lodash/omit"));
9
+
10
+ var _reactDesc = require("react-desc");
11
+
12
+ var _InputField = require("../../atoms/InputField");
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ 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; }
17
+
18
+ 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; }
19
+
20
+ 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; }
21
+
22
+ var schema = (0, _reactDesc.describe)({
23
+ displayName: 'PasswordField'
24
+ });
25
+ schema.propTypes = _objectSpread({}, (0, _omit.default)(_InputField.schema.makePropTypes(), ['children', 'maxLength', 'showCharacterCount', 'icon', 'readOnly', 'label']));
26
+ var _default = schema;
27
+ exports.default = _default;
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { SearchInputProps, SearchItem, StyledFlexProps } from './types';
3
+ declare function SearchInput({ onSearch, value, onChange, size, disabled, ...props }: SearchInputProps): JSX.Element;
4
+ declare namespace SearchInput {
5
+ var defaultProps: {
6
+ size: string;
7
+ };
8
+ }
9
+ export default SearchInput;
10
+ export { SearchInputProps, SearchItem, StyledFlexProps };
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = SearchInput;
7
+ Object.defineProperty(exports, "SearchInputProps", {
8
+ enumerable: true,
9
+ get: function get() {
10
+ return _types.SearchInputProps;
11
+ }
12
+ });
13
+ Object.defineProperty(exports, "SearchItem", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _types.SearchItem;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "StyledFlexProps", {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _types.StyledFlexProps;
23
+ }
24
+ });
25
+
26
+ var _react = _interopRequireWildcard(require("react"));
27
+
28
+ var _Times = _interopRequireDefault(require("@decisiv/iconix/lib/components/Times"));
29
+
30
+ var _Search = _interopRequireDefault(require("@decisiv/iconix/lib/components/Search"));
31
+
32
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
33
+
34
+ var _spacing = _interopRequireDefault(require("@decisiv/design-tokens/lib/spacing"));
35
+
36
+ var _rem = _interopRequireDefault(require("polished/lib/helpers/rem"));
37
+
38
+ var _color = _interopRequireDefault(require("@decisiv/design-tokens/lib/color"));
39
+
40
+ var _toColorString = _interopRequireDefault(require("polished/lib/color/toColorString"));
41
+
42
+ var _useTranslations = _interopRequireDefault(require("../../utils/useTranslations"));
43
+
44
+ var _Flex = _interopRequireDefault(require("../Flex"));
45
+
46
+ var _Button = _interopRequireDefault(require("../Button"));
47
+
48
+ var _InputField = _interopRequireDefault(require("../../atoms/InputField"));
49
+
50
+ var _Tooltip = _interopRequireDefault(require("../Tooltip"));
51
+
52
+ var _focusRingWithColor = _interopRequireDefault(require("../../utils/focusRingWithColor"));
53
+
54
+ var _types = require("./types");
55
+
56
+ var _Input = _interopRequireDefault(require("../TextField/Input"));
57
+
58
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
59
+
60
+ 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; } }
61
+
62
+ 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); }
63
+
64
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
65
+
66
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
67
+
68
+ var StyledFlex = (0, _styledComponents.default)(_Flex.default).withConfig({
69
+ displayName: "SearchInput__StyledFlex",
70
+ componentId: "sc-1lgi0sd-0"
71
+ })(["align-items:center;[cursor='text']{height:", "px;> div{", ";padding-bottom:", ";}}"], function (_ref) {
72
+ var mediumSized = _ref.mediumSized;
73
+ return mediumSized ? 50 : 32;
74
+ }, function (_ref2) {
75
+ var mediumSized = _ref2.mediumSized;
76
+ return !mediumSized && "padding-top: ".concat((0, _rem.default)(_spacing.default.base * 0.1));
77
+ }, function (_ref3) {
78
+ var mediumSized = _ref3.mediumSized;
79
+ return (0, _rem.default)(_spacing.default.base * (mediumSized ? 0.6 : 0.1));
80
+ });
81
+ var StyledBody = (0, _styledComponents.default)(_Flex.default).withConfig({
82
+ displayName: "SearchInput__StyledBody",
83
+ componentId: "sc-1lgi0sd-1"
84
+ })(["flex:1;align-items:center;"]);
85
+ var ButtonGroup = (0, _styledComponents.default)(_Flex.default).withConfig({
86
+ displayName: "SearchInput__ButtonGroup",
87
+ componentId: "sc-1lgi0sd-2"
88
+ })(["margin-right:", ";cursor:default;"], function (_ref4) {
89
+ var mediumSized = _ref4.mediumSized;
90
+ return (0, _rem.default)(_spacing.default.base * (mediumSized ? 1 : 0.3));
91
+ });
92
+ var SearchIconWrapper = (0, _styledComponents.default)(_Flex.default).withConfig({
93
+ displayName: "SearchInput__SearchIconWrapper",
94
+ 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));
96
+ var TimesIconWrapper = (0, _styledComponents.default)(_Flex.default).withConfig({
97
+ displayName: "SearchInput__TimesIconWrapper",
98
+ 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;
101
+ return visible ? 'visible' : 'hidden';
102
+ }, (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
+ var StyledInput = (0, _styledComponents.default)(_Input.default).withConfig({
104
+ displayName: "SearchInput__StyledInput",
105
+ componentId: "sc-1lgi0sd-5"
106
+ })(["padding:0;color:", ";"], (0, _toColorString.default)(_color.default.base.charcoal));
107
+
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"]);
115
+
116
+ var translate = (0, _useTranslations.default)();
117
+ var handleSearch = (0, _react.useCallback)(function () {
118
+ !disabled && onSearch && onSearch(value);
119
+ }, [disabled, onSearch, value]);
120
+ var mediumSized = size === 'medium';
121
+ var hasText = !!value && !!value.length;
122
+ var handleClear = (0, _react.useCallback)(function () {
123
+ !disabled && onChange && onChange({
124
+ target: {
125
+ value: ''
126
+ }
127
+ });
128
+ }, [disabled, onChange]);
129
+ var handleKeyPress = (0, _react.useCallback)(function (event) {
130
+ if (event.key === 'Enter') handleSearch();
131
+ }, [handleSearch]);
132
+ return _react.default.createElement(StyledFlex, {
133
+ mediumSized: mediumSized,
134
+ flex: 1,
135
+ "data-testid": "search-container"
136
+ }, _react.default.createElement(_InputField.default, _extends({
137
+ label: "",
138
+ hideLabel: true,
139
+ disabled: disabled,
140
+ value: value
141
+ }, 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
144
+ }, _react.default.createElement(_Search.default, {
145
+ size: "medium",
146
+ "data-testid": "search-icon"
147
+ })), _react.default.createElement(StyledInput, _extends({}, p, {
148
+ onChange: onChange,
149
+ onKeyPress: handleKeyPress
150
+ })), _react.default.createElement(ButtonGroup, {
151
+ mediumSized: mediumSized
152
+ }, !disabled && _react.default.createElement(_Tooltip.default, {
153
+ placement: "top",
154
+ target: // eslint-disable-next-line react/jsx-wrap-multilines
155
+ _react.default.createElement(TimesIconWrapper, {
156
+ tabIndex: 0,
157
+ "aria-label": translate(undefined, 'searchInput.clearSearch'),
158
+ onClick: handleClear,
159
+ visible: hasText
160
+ }, _react.default.createElement(_Times.default, {
161
+ size: "small"
162
+ }))
163
+ }, translate(undefined, 'searchInput.clear')), _react.default.createElement(_Button.default, {
164
+ "aria-label": "Search",
165
+ tabIndex: 0,
166
+ disabled: disabled || !hasText,
167
+ text: mediumSized ? translate(undefined, 'searchInput.search') : '',
168
+ icon: mediumSized ? undefined : _Search.default,
169
+ size: size,
170
+ onClick: handleSearch
171
+ }))));
172
+ }));
173
+ }
174
+
175
+ SearchInput.defaultProps = {
176
+ size: 'medium'
177
+ };