@laerdal/life-react-components 1.7.0-dev.4 → 1.7.0-dev.6.full

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 (215) hide show
  1. package/dist/Accordion/ContentAccordion.cjs +1 -1
  2. package/dist/Accordion/ContentAccordion.cjs.map +1 -1
  3. package/dist/Accordion/ContentAccordion.js +2 -2
  4. package/dist/Accordion/ContentAccordion.js.map +1 -1
  5. package/dist/Accordion/styles.cjs +1 -1
  6. package/dist/Accordion/styles.cjs.map +1 -1
  7. package/dist/Accordion/styles.js +2 -2
  8. package/dist/Accordion/styles.js.map +1 -1
  9. package/dist/Banners/Banner.cjs +3 -3
  10. package/dist/Banners/Banner.cjs.map +1 -1
  11. package/dist/Banners/Banner.js +3 -3
  12. package/dist/Banners/Banner.js.map +1 -1
  13. package/dist/Banners/styles.cjs +1 -1
  14. package/dist/Banners/styles.cjs.map +1 -1
  15. package/dist/Banners/styles.js +1 -1
  16. package/dist/Banners/styles.js.map +1 -1
  17. package/dist/Button/BackButton.cjs +2 -2
  18. package/dist/Button/BackButton.cjs.map +1 -1
  19. package/dist/Button/BackButton.js +3 -3
  20. package/dist/Button/BackButton.js.map +1 -1
  21. package/dist/Button/Button.cjs +8 -21
  22. package/dist/Button/Button.cjs.map +1 -1
  23. package/dist/Button/Button.d.ts +1 -0
  24. package/dist/Button/Button.js +9 -22
  25. package/dist/Button/Button.js.map +1 -1
  26. package/dist/Button/Iconbutton.cjs +14 -27
  27. package/dist/Button/Iconbutton.cjs.map +1 -1
  28. package/dist/Button/Iconbutton.d.ts +2 -0
  29. package/dist/Button/Iconbutton.js +15 -28
  30. package/dist/Button/Iconbutton.js.map +1 -1
  31. package/dist/Card/Card.cjs +1 -1
  32. package/dist/Card/Card.cjs.map +1 -1
  33. package/dist/Card/Card.js +2 -2
  34. package/dist/Card/Card.js.map +1 -1
  35. package/dist/Chips/ChipStyles.cjs +2 -2
  36. package/dist/Chips/ChipStyles.cjs.map +1 -1
  37. package/dist/Chips/ChipStyles.js +3 -3
  38. package/dist/Chips/ChipStyles.js.map +1 -1
  39. package/dist/Dropdown/BasicDropdown.cjs +1 -0
  40. package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
  41. package/dist/Dropdown/BasicDropdown.js +2 -1
  42. package/dist/Dropdown/BasicDropdown.js.map +1 -1
  43. package/dist/Dropdown/ChipDropdownInput.cjs +1 -1
  44. package/dist/Dropdown/ChipDropdownInput.cjs.map +1 -1
  45. package/dist/Dropdown/ChipDropdownInput.js +1 -1
  46. package/dist/Dropdown/ChipDropdownInput.js.map +1 -1
  47. package/dist/Dropdown/CommonStyling.cjs +7 -5
  48. package/dist/Dropdown/CommonStyling.cjs.map +1 -1
  49. package/dist/Dropdown/CommonStyling.js +7 -6
  50. package/dist/Dropdown/CommonStyling.js.map +1 -1
  51. package/dist/Dropdown/DropdownContent.cjs +3 -1
  52. package/dist/Dropdown/DropdownContent.cjs.map +1 -1
  53. package/dist/Dropdown/DropdownContent.js +3 -1
  54. package/dist/Dropdown/DropdownContent.js.map +1 -1
  55. package/dist/Footer/Components/FooterDropdownLinks.cjs +6 -3
  56. package/dist/Footer/Components/FooterDropdownLinks.cjs.map +1 -1
  57. package/dist/Footer/Components/FooterDropdownLinks.js +6 -4
  58. package/dist/Footer/Components/FooterDropdownLinks.js.map +1 -1
  59. package/dist/Footer/Components/FooterNewsletterAndSocialSection.cjs +5 -3
  60. package/dist/Footer/Components/FooterNewsletterAndSocialSection.cjs.map +1 -1
  61. package/dist/Footer/Components/FooterNewsletterAndSocialSection.js +5 -4
  62. package/dist/Footer/Components/FooterNewsletterAndSocialSection.js.map +1 -1
  63. package/dist/Footer/Components/FooterTop.cjs +2 -1
  64. package/dist/Footer/Components/FooterTop.cjs.map +1 -1
  65. package/dist/Footer/Components/FooterTop.js +3 -2
  66. package/dist/Footer/Components/FooterTop.js.map +1 -1
  67. package/dist/GlobalNavigationBar/Avatar.cjs +5 -7
  68. package/dist/GlobalNavigationBar/Avatar.cjs.map +1 -1
  69. package/dist/GlobalNavigationBar/Avatar.js +5 -8
  70. package/dist/GlobalNavigationBar/Avatar.js.map +1 -1
  71. package/dist/GlobalNavigationBar/Logo.cjs +9 -6
  72. package/dist/GlobalNavigationBar/Logo.cjs.map +1 -1
  73. package/dist/GlobalNavigationBar/Logo.d.ts +2 -1
  74. package/dist/GlobalNavigationBar/Logo.js +9 -7
  75. package/dist/GlobalNavigationBar/Logo.js.map +1 -1
  76. package/dist/GlobalNavigationBar/MainMenu.cjs +11 -13
  77. package/dist/GlobalNavigationBar/MainMenu.cjs.map +1 -1
  78. package/dist/GlobalNavigationBar/MainMenu.js +10 -13
  79. package/dist/GlobalNavigationBar/MainMenu.js.map +1 -1
  80. package/dist/GlobalNavigationBar/RightSideNav.cjs +3 -5
  81. package/dist/GlobalNavigationBar/RightSideNav.cjs.map +1 -1
  82. package/dist/GlobalNavigationBar/RightSideNav.js +2 -5
  83. package/dist/GlobalNavigationBar/RightSideNav.js.map +1 -1
  84. package/dist/GlobalNavigationBar/mobile/CommonStyles.cjs +1 -1
  85. package/dist/GlobalNavigationBar/mobile/CommonStyles.cjs.map +1 -1
  86. package/dist/GlobalNavigationBar/mobile/CommonStyles.js +2 -2
  87. package/dist/GlobalNavigationBar/mobile/CommonStyles.js.map +1 -1
  88. package/dist/GlobalNavigationBar/mobile/MobileMenu.cjs +1 -1
  89. package/dist/GlobalNavigationBar/mobile/MobileMenu.cjs.map +1 -1
  90. package/dist/GlobalNavigationBar/mobile/MobileMenu.js +2 -2
  91. package/dist/GlobalNavigationBar/mobile/MobileMenu.js.map +1 -1
  92. package/dist/HyperLink/styling.cjs +1 -1
  93. package/dist/HyperLink/styling.cjs.map +1 -1
  94. package/dist/HyperLink/styling.js +1 -1
  95. package/dist/HyperLink/styling.js.map +1 -1
  96. package/dist/InputFields/Checkbox.cjs +2 -2
  97. package/dist/InputFields/Checkbox.cjs.map +1 -1
  98. package/dist/InputFields/Checkbox.js +3 -3
  99. package/dist/InputFields/Checkbox.js.map +1 -1
  100. package/dist/InputFields/DatepickerField.cjs +4 -4
  101. package/dist/InputFields/DatepickerField.cjs.map +1 -1
  102. package/dist/InputFields/DatepickerField.js +5 -5
  103. package/dist/InputFields/DatepickerField.js.map +1 -1
  104. package/dist/InputFields/QuickSearch.cjs +119 -96
  105. package/dist/InputFields/QuickSearch.cjs.map +1 -1
  106. package/dist/InputFields/QuickSearch.js +119 -96
  107. package/dist/InputFields/QuickSearch.js.map +1 -1
  108. package/dist/InputFields/RadioButton.cjs +2 -2
  109. package/dist/InputFields/RadioButton.cjs.map +1 -1
  110. package/dist/InputFields/RadioButton.js +3 -3
  111. package/dist/InputFields/RadioButton.js.map +1 -1
  112. package/dist/InputFields/SearchBar.cjs +3 -3
  113. package/dist/InputFields/SearchBar.cjs.map +1 -1
  114. package/dist/InputFields/SearchBar.js +3 -3
  115. package/dist/InputFields/SearchBar.js.map +1 -1
  116. package/dist/InputFields/Textarea.cjs +1 -1
  117. package/dist/InputFields/Textarea.cjs.map +1 -1
  118. package/dist/InputFields/Textarea.js +1 -1
  119. package/dist/InputFields/Textarea.js.map +1 -1
  120. package/dist/InputFields/components/SearchBarInput.cjs +6 -8
  121. package/dist/InputFields/components/SearchBarInput.cjs.map +1 -1
  122. package/dist/InputFields/components/SearchBarInput.d.ts +0 -3
  123. package/dist/InputFields/components/SearchBarInput.js +4 -5
  124. package/dist/InputFields/components/SearchBarInput.js.map +1 -1
  125. package/dist/InputFields/components/SearchField.cjs +29 -19
  126. package/dist/InputFields/components/SearchField.cjs.map +1 -1
  127. package/dist/InputFields/components/SearchField.d.ts +8 -8
  128. package/dist/InputFields/components/SearchField.js +25 -18
  129. package/dist/InputFields/components/SearchField.js.map +1 -1
  130. package/dist/InputFields/styling.cjs +6 -8
  131. package/dist/InputFields/styling.cjs.map +1 -1
  132. package/dist/InputFields/styling.js +7 -8
  133. package/dist/InputFields/styling.js.map +1 -1
  134. package/dist/List/ListRow.cjs +5 -2
  135. package/dist/List/ListRow.cjs.map +1 -1
  136. package/dist/List/ListRow.js +5 -3
  137. package/dist/List/ListRow.js.map +1 -1
  138. package/dist/MenuItem/MenuItem.cjs +1 -0
  139. package/dist/MenuItem/MenuItem.cjs.map +1 -1
  140. package/dist/MenuItem/MenuItem.js +2 -1
  141. package/dist/MenuItem/MenuItem.js.map +1 -1
  142. package/dist/Modals/ModalContainer.cjs +12 -36
  143. package/dist/Modals/ModalContainer.cjs.map +1 -1
  144. package/dist/Modals/ModalContainer.d.ts +3 -8
  145. package/dist/Modals/ModalContainer.js +12 -37
  146. package/dist/Modals/ModalContainer.js.map +1 -1
  147. package/dist/Modals/ModalDialog.cjs +2 -2
  148. package/dist/Modals/ModalDialog.cjs.map +1 -1
  149. package/dist/Modals/ModalDialog.js +2 -2
  150. package/dist/Modals/ModalDialog.js.map +1 -1
  151. package/dist/NavItem/NavItem.cjs +1 -1
  152. package/dist/NavItem/NavItem.cjs.map +1 -1
  153. package/dist/NavItem/NavItem.js +2 -2
  154. package/dist/NavItem/NavItem.js.map +1 -1
  155. package/dist/Paginator/Paginator.cjs +1 -1
  156. package/dist/Paginator/Paginator.cjs.map +1 -1
  157. package/dist/Paginator/Paginator.js +2 -2
  158. package/dist/Paginator/Paginator.js.map +1 -1
  159. package/dist/QuizButton/QuizButton.cjs +4 -8
  160. package/dist/QuizButton/QuizButton.cjs.map +1 -1
  161. package/dist/QuizButton/QuizButton.js +5 -9
  162. package/dist/QuizButton/QuizButton.js.map +1 -1
  163. package/dist/SegmentControl/SegmentControl.cjs +1 -1
  164. package/dist/SegmentControl/SegmentControl.cjs.map +1 -1
  165. package/dist/SegmentControl/SegmentControl.js +2 -2
  166. package/dist/SegmentControl/SegmentControl.js.map +1 -1
  167. package/dist/Switcher/SwitcherMenuItem.cjs +1 -1
  168. package/dist/Switcher/SwitcherMenuItem.cjs.map +1 -1
  169. package/dist/Switcher/SwitcherMenuItem.js +2 -2
  170. package/dist/Switcher/SwitcherMenuItem.js.map +1 -1
  171. package/dist/Table/TableStyles.cjs +4 -4
  172. package/dist/Table/TableStyles.cjs.map +1 -1
  173. package/dist/Table/TableStyles.js +5 -5
  174. package/dist/Table/TableStyles.js.map +1 -1
  175. package/dist/Tabs/HorizontalTabs.cjs +1 -1
  176. package/dist/Tabs/HorizontalTabs.cjs.map +1 -1
  177. package/dist/Tabs/HorizontalTabs.js +2 -2
  178. package/dist/Tabs/HorizontalTabs.js.map +1 -1
  179. package/dist/Tabs/TabLink.cjs +5 -2
  180. package/dist/Tabs/TabLink.cjs.map +1 -1
  181. package/dist/Tabs/TabLink.js +5 -3
  182. package/dist/Tabs/TabLink.js.map +1 -1
  183. package/dist/Tabs/VerticalTabs.cjs.map +1 -1
  184. package/dist/Tabs/VerticalTabs.js.map +1 -1
  185. package/dist/Toasters/Toast.cjs +2 -0
  186. package/dist/Toasters/Toast.cjs.map +1 -1
  187. package/dist/Toasters/Toast.js +2 -0
  188. package/dist/Toasters/Toast.js.map +1 -1
  189. package/dist/Toggles/ToggleSwitch.cjs +8 -6
  190. package/dist/Toggles/ToggleSwitch.cjs.map +1 -1
  191. package/dist/Toggles/ToggleSwitch.js +8 -6
  192. package/dist/Toggles/ToggleSwitch.js.map +1 -1
  193. package/dist/Toggles/TogglerStyles.cjs +2 -2
  194. package/dist/Toggles/TogglerStyles.cjs.map +1 -1
  195. package/dist/Toggles/TogglerStyles.js +3 -3
  196. package/dist/Toggles/TogglerStyles.js.map +1 -1
  197. package/dist/common/FocusVisible.cjs +24 -1
  198. package/dist/common/FocusVisible.cjs.map +1 -1
  199. package/dist/common/FocusVisible.js +24 -1
  200. package/dist/common/FocusVisible.js.map +1 -1
  201. package/dist/common/InputStyling.cjs +1 -1
  202. package/dist/common/InputStyling.cjs.map +1 -1
  203. package/dist/common/InputStyling.js +2 -2
  204. package/dist/common/InputStyling.js.map +1 -1
  205. package/dist/styles/focus-styles.cjs +22 -0
  206. package/dist/styles/focus-styles.cjs.map +1 -0
  207. package/dist/styles/focus-styles.d.ts +2 -0
  208. package/dist/styles/focus-styles.js +9 -0
  209. package/dist/styles/focus-styles.js.map +1 -0
  210. package/dist/styles/index.cjs +60 -0
  211. package/dist/styles/index.cjs.map +1 -1
  212. package/dist/styles/index.d.ts +1 -0
  213. package/dist/styles/index.js +1 -0
  214. package/dist/styles/index.js.map +1 -1
  215. package/package.json +1 -1
@@ -31,7 +31,7 @@ var _SystemIcons = require("../icons/systemicons/SystemIcons");
31
31
 
32
32
  var _SearchBarInput = _interopRequireDefault(require("./components/SearchBarInput"));
33
33
 
34
- var _SearchField = require("./components/SearchField");
34
+ var _SearchField = _interopRequireWildcard(require("./components/SearchField"));
35
35
 
36
36
  var _jsxRuntime = require("react/jsx-runtime");
37
37
 
@@ -41,13 +41,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
41
41
 
42
42
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
43
 
44
- var QuickSearchField = (0, _styledComponents.default)(_SearchField.StyledSearchField)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n ", "\n -webkit-transition: box-shadow 0.2s ease-in-out, width 0.2s ease-in-out;\n transition: box-shadow 0.2s ease-in-out, width 0.2s ease-in-out;\n\n background-color: transparent;\n &.small {\n width: 48px;\n }\n\n &.medium {\n width: 56px;\n }\n \n &.expanded{\n width: 100%;\n background-color: ", ";\n }\n\n input {\n ::placeholder {\n font-style: italic;\n color: ", ";\n }\n }\n\n box-shadow: ", ";\n\n &:hover {\n box-shadow: ", ";\n }\n"])), function (props) {
45
- return props.margin ? "margin: ".concat(props.margin, ";") : '';
46
- }, _.COLORS.white, _.COLORS.neutral_600, function (props) {
47
- return props.expanded ? "inset 0px 0px 0px 2px ".concat(_.COLORS.primary_800) : 'none !important';
48
- }, function (props) {
49
- return props.expanded ? "inset 0px 0px 0px 2px ".concat(_.COLORS.primary_700) : 'none !important';
50
- });
44
+ var Wrapper = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: 100%;\n\n ", " {\n transition: box-shadow 0.2s ease-in-out, width 0.2s ease-in-out;\n\n background-color: transparent;\n\n &.small {\n width: 48px;\n }\n\n &.medium {\n width: 56px;\n }\n\n &.expanded {\n width: 100%;\n }\n\n box-shadow: none;\n\n &:hover {\n box-shadow: none;\n }\n\n &.expanded {\n background-color: ", ";\n box-shadow: inset 0 0 0 1px ", ";\n }\n\n &.expanded:hover,\n &.expanded:focus-within {\n box-shadow: inset 0 0 0 2px ", ";\n }\n }\n"])), _SearchField.StyledSearchField, _.COLORS.white, _.COLORS.neutral_400, _.COLORS.primary_800);
51
45
 
52
46
  var QuickSearch = function QuickSearch(_ref) {
53
47
  var id = _ref.id,
@@ -65,121 +59,150 @@ var QuickSearch = function QuickSearch(_ref) {
65
59
  var searchFieldRef = React.useRef(null);
66
60
  var searchFieldInputRef = React.useRef(null);
67
61
 
68
- var _React$useState = React.useState(false),
62
+ var _React$useState = React.useState({
63
+ visible: false
64
+ }),
69
65
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
70
66
  searchFieldVisible = _React$useState2[0],
71
67
  setSearchFieldVisible = _React$useState2[1];
72
68
 
73
69
  var handleClickOutside = function handleClickOutside(e) {
74
70
  if (searchFieldRef !== null && searchFieldRef !== void 0 && searchFieldRef.current && !searchFieldRef.current.contains(e.target)) {
75
- if (searchFieldVisible && !(searchTerm !== null && searchTerm !== void 0 && searchTerm.length)) {
76
- setSearchFieldVisible(false);
71
+ if (searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible && !(searchTerm !== null && searchTerm !== void 0 && searchTerm.length)) {
72
+ setSearchFieldVisible({
73
+ visible: false
74
+ });
77
75
  }
78
76
  }
79
77
  };
80
78
 
79
+ var handleKeyDown = function handleKeyDown(e) {
80
+ if (onKeyDown) {
81
+ onKeyDown(e);
82
+ }
83
+
84
+ if (e.key === 'Escape') {
85
+ if (searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible && !(searchTerm !== null && searchTerm !== void 0 && searchTerm.length)) {
86
+ setSearchFieldVisible({
87
+ visible: false
88
+ });
89
+ }
90
+ }
91
+ };
92
+
93
+ var handleBlur = function handleBlur(e) {
94
+ var _searchFieldRef$curre;
95
+
96
+ if (!searchTerm && (!e.relatedTarget || !((_searchFieldRef$curre = searchFieldRef.current) !== null && _searchFieldRef$curre !== void 0 && _searchFieldRef$curre.contains(e.relatedTarget)))) {
97
+ setSearchFieldVisible({
98
+ visible: false
99
+ });
100
+ }
101
+ };
102
+
103
+ var handleSearchIconAction = function handleSearchIconAction(e) {
104
+ if (searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible) {
105
+ enterSearch(searchTerm);
106
+ } else {
107
+ setSearchFieldVisible({
108
+ visible: !searchFieldVisible.visible,
109
+ focus: !searchFieldVisible.visible && (e === null || e === void 0 ? void 0 : e.detail) !== 1
110
+ });
111
+ }
112
+ }; // set search field visibility on search term change
113
+
114
+
81
115
  React.useEffect(function () {
82
- if (searchTerm !== null && searchTerm !== void 0 && searchTerm.length) {
83
- setSearchFieldVisible(true);
116
+ if (!!(searchTerm !== null && searchTerm !== void 0 && searchTerm.length) && !(searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible)) {
117
+ setSearchFieldVisible({
118
+ visible: true,
119
+ focus: false
120
+ });
84
121
  }
85
- }, [searchTerm]);
122
+ }, [searchTerm, searchFieldVisible]); // register click outside handler
123
+
86
124
  React.useEffect(function () {
87
125
  document.addEventListener('click', handleClickOutside);
88
126
  return function () {
89
127
  document.removeEventListener('click', handleClickOutside);
90
128
  };
91
- });
129
+ }); // focus search input on visibility change
130
+
92
131
  React.useEffect(function () {
93
- if (searchFieldVisible) {
132
+ if (searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible) {
94
133
  var _searchFieldInputRef$;
95
134
 
96
- searchFieldInputRef === null || searchFieldInputRef === void 0 ? void 0 : (_searchFieldInputRef$ = searchFieldInputRef.current) === null || _searchFieldInputRef$ === void 0 ? void 0 : _searchFieldInputRef$.focus();
97
- }
98
- }, [searchFieldVisible, searchFieldInputRef, id]);
99
-
100
- var handleKeyDown = function handleKeyDown(e) {
101
- if (onKeyDown) {
102
- onKeyDown(e);
103
- }
104
-
105
- if (e.key === 'Escape') {
106
- if (searchFieldVisible && !(searchTerm !== null && searchTerm !== void 0 && searchTerm.length)) {
107
- setSearchFieldVisible(false);
108
- }
135
+ searchFieldInputRef === null || searchFieldInputRef === void 0 ? void 0 : (_searchFieldInputRef$ = searchFieldInputRef.current) === null || _searchFieldInputRef$ === void 0 ? void 0 : _searchFieldInputRef$.focus({
136
+ focusVisible: searchFieldVisible.focus
137
+ });
109
138
  }
110
- };
111
-
112
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(QuickSearchField, {
113
- ref: searchFieldRef,
114
- expanded: searchFieldVisible,
115
- id: "".concat(id, "_main"),
116
- onBlur: function onBlur(event) {
117
- if (event.relatedTarget && searchFieldRef !== null && searchFieldRef !== void 0 && searchFieldRef.current && !searchFieldRef.current.contains(event.relatedTarget) && !searchTerm) {
118
- setSearchFieldVisible(false);
119
- }
120
- },
121
- "data-testid": "".concat(id, "_main"),
122
- className: (searchTerm !== '' ? 'searchactive ' : '').concat(size ? size : '').concat(searchFieldVisible ? ' expanded' : ''),
123
- margin: margin,
124
- children: [searchFieldVisible && /*#__PURE__*/(0, _jsxRuntime.jsx)(_SearchBarInput.default, {
125
- placeholder: disabled ? '' : placeholder,
139
+ }, [searchFieldVisible.visible, searchFieldInputRef]);
140
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapper, {
141
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_SearchField.default, {
142
+ ref: searchFieldRef,
126
143
  id: id,
127
- ref: searchFieldInputRef,
128
- disabled: disabled,
129
- onKeyDown: handleKeyDown,
130
144
  size: size,
131
- setSearchTerm: function setSearchTerm(term) {
132
- return _setSearchTerm(term);
133
- },
134
145
  searchTerm: searchTerm,
135
- enterSearch: enterSearch,
136
- focusParentRefs: [searchFieldRef]
137
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_styling.SearchIconWrapper, {
138
- className: size ? size : '',
139
- role: "button",
140
- "aria-label": performSearchLabel,
141
- tabIndex: -1,
142
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Iconbutton.default, {
143
- id: "".concat(id, "_Searchbutton"),
144
- variant: "secondary",
145
- shape: "circular",
146
- tabIndex: searchFieldVisible ? -1 : 0,
147
- action: function action(e) {
148
- return searchFieldVisible ? enterSearch(e) : setSearchFieldVisible(!searchFieldVisible);
146
+ style: {
147
+ margin: margin
148
+ },
149
+ onBlur: handleBlur,
150
+ className: searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible ? 'expanded' : '',
151
+ children: [(searchFieldVisible === null || searchFieldVisible === void 0 ? void 0 : searchFieldVisible.visible) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_SearchBarInput.default, {
152
+ placeholder: disabled ? '' : placeholder,
153
+ id: id,
154
+ ref: searchFieldInputRef,
155
+ disabled: disabled,
156
+ onKeyDown: handleKeyDown,
157
+ size: size,
158
+ setSearchTerm: function setSearchTerm(term) {
159
+ return _setSearchTerm(term);
149
160
  },
150
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SystemIcons.Search, {
151
- size: "24px",
152
- color: disabled ? _.COLORS.neutral_300 : _.COLORS.neutral_600
161
+ searchTerm: searchTerm,
162
+ enterSearch: enterSearch,
163
+ focusParentRefs: [searchFieldRef]
164
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_styling.SearchIconWrapper, {
165
+ className: size ? size : '',
166
+ role: "button",
167
+ "aria-label": performSearchLabel,
168
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Iconbutton.default, {
169
+ id: "".concat(id, "_Searchbutton"),
170
+ variant: "secondary",
171
+ shape: "circular",
172
+ tabIndex: searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible ? -1 : 0,
173
+ action: handleSearchIconAction,
174
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SystemIcons.Search, {
175
+ size: "24px",
176
+ color: disabled ? _.COLORS.neutral_300 : _.COLORS.neutral_600
177
+ })
153
178
  })
154
- })
155
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_styling.StyledIcon, {
156
- className: size ? size : '',
157
- role: "button",
158
- tabIndex: -1,
159
- hidden: searchTerm === '' || searchTerm === undefined || !searchFieldVisible,
160
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Iconbutton.default, {
161
- id: "".concat(id, "_Clearicon"),
162
- variant: "secondary",
163
- shape: "circular",
164
- action: function action(e) {
165
- var _searchFieldInputRef$2;
166
-
167
- removeSearch(e);
168
- searchFieldInputRef === null || searchFieldInputRef === void 0 ? void 0 : (_searchFieldInputRef$2 = searchFieldInputRef.current) === null || _searchFieldInputRef$2 === void 0 ? void 0 : _searchFieldInputRef$2.focus();
169
- },
170
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SystemIcons.Clear, {
171
- size: "24px",
172
- color: disabled ? _.COLORS.neutral_300 : _.COLORS.neutral_600
179
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_styling.StyledIcon, {
180
+ className: size ? size : '',
181
+ role: "button",
182
+ hidden: !searchTerm || !(searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible),
183
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Iconbutton.default, {
184
+ id: "".concat(id, "_Clearicon"),
185
+ variant: "secondary",
186
+ shape: "circular",
187
+ action: function action(e) {
188
+ var _searchFieldInputRef$2;
189
+
190
+ removeSearch(e);
191
+ searchFieldInputRef === null || searchFieldInputRef === void 0 ? void 0 : (_searchFieldInputRef$2 = searchFieldInputRef.current) === null || _searchFieldInputRef$2 === void 0 ? void 0 : _searchFieldInputRef$2.focus();
192
+ },
193
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SystemIcons.Clear, {
194
+ size: "24px",
195
+ color: disabled ? _.COLORS.neutral_300 : _.COLORS.neutral_600
196
+ })
197
+ })
198
+ }), loading && (searchFieldVisible === null || searchFieldVisible === void 0 ? void 0 : searchFieldVisible.visible) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_styling.StyledIcon, {
199
+ className: size ? size : '',
200
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.LoadingIndicator, {
201
+ size: _types.Size.Small,
202
+ color: _.COLORS.neutral_600
173
203
  })
174
- })
175
- }), loading && searchFieldVisible && /*#__PURE__*/(0, _jsxRuntime.jsx)(_styling.StyledIcon, {
176
- className: size ? size : '',
177
- tabIndex: -1,
178
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.LoadingIndicator, {
179
- size: _types.Size.Small,
180
- color: _.COLORS.neutral_600
181
- })
182
- })]
204
+ })]
205
+ })
183
206
  });
184
207
  };
185
208
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/InputFields/QuickSearch.tsx"],"names":["QuickSearchField","StyledSearchField","props","margin","COLORS","white","neutral_600","expanded","primary_800","primary_700","QuickSearch","id","searchTerm","setSearchTerm","enterSearch","removeSearch","placeholder","performSearchLabel","disabled","onKeyDown","size","loading","searchFieldRef","React","useRef","searchFieldInputRef","useState","searchFieldVisible","setSearchFieldVisible","handleClickOutside","e","current","contains","target","length","useEffect","document","addEventListener","removeEventListener","focus","handleKeyDown","key","event","relatedTarget","concat","term","neutral_300","undefined","Size","Small"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\n\nimport IconButton from '../Button/Iconbutton';\nimport { SearchIconWrapper, StyledIcon } from './styling';\nimport { Size } from '../types';\nimport { COLORS, LoadingIndicator } from '..';\nimport { Search as SearchIcon, Clear as ClearIcon } from '../icons/systemicons/SystemIcons';\nimport SearchBarInput from './components/SearchBarInput';\nimport { StyledSearchField } from './components/SearchField';\n\nconst QuickSearchField = styled(StyledSearchField)<{ expanded: boolean; margin?: string }>`\n ${(props) => (props.margin ? `margin: ${props.margin};` : '')}\n -webkit-transition: box-shadow 0.2s ease-in-out, width 0.2s ease-in-out;\n transition: box-shadow 0.2s ease-in-out, width 0.2s ease-in-out;\n\n background-color: transparent;\n &.small {\n width: 48px;\n }\n\n &.medium {\n width: 56px;\n }\n \n &.expanded{\n width: 100%;\n background-color: ${COLORS.white};\n }\n\n input {\n ::placeholder {\n font-style: italic;\n color: ${COLORS.neutral_600};\n }\n }\n\n box-shadow: ${(props) => (props.expanded ? `inset 0px 0px 0px 2px ${COLORS.primary_800}` : 'none !important')};\n\n &:hover {\n box-shadow: ${(props) => (props.expanded ? `inset 0px 0px 0px 2px ${COLORS.primary_700}` : 'none !important')};\n }\n`;\n\ntype QuickSearchProps = {\n id: string;\n searchTerm?: string;\n setSearchTerm: (term: string) => void;\n enterSearch: (e: any) => void;\n removeSearch: (e: any) => void;\n placeholder?: string;\n performSearchLabel?: string;\n disabled?: boolean;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n size?: Size.Small | Size.Medium;\n margin?: string;\n loading?: boolean;\n};\n\nconst QuickSearch: React.FunctionComponent<QuickSearchProps> = ({\n id,\n searchTerm,\n setSearchTerm,\n enterSearch,\n removeSearch,\n placeholder,\n performSearchLabel,\n disabled,\n onKeyDown,\n size,\n margin,\n loading,\n}: QuickSearchProps) => {\n const searchFieldRef = React.useRef<HTMLDivElement>(null);\n const searchFieldInputRef = React.useRef<HTMLInputElement>(null);\n\n const [searchFieldVisible, setSearchFieldVisible] = React.useState<boolean>(false);\n\n const handleClickOutside = (e: any) => {\n if (searchFieldRef?.current && !searchFieldRef.current.contains(e.target)) {\n if (searchFieldVisible && !searchTerm?.length) {\n setSearchFieldVisible(false);\n }\n }\n };\n\n React.useEffect(() => {\n if (searchTerm?.length) {\n setSearchFieldVisible(true);\n }\n }, [searchTerm]);\n\n React.useEffect(() => {\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('click', handleClickOutside);\n };\n });\n\n React.useEffect(() => {\n if (searchFieldVisible) {\n searchFieldInputRef?.current?.focus();\n }\n }, [searchFieldVisible, searchFieldInputRef, id]);\n\n const handleKeyDown = (e: any) => {\n if (onKeyDown) {\n onKeyDown(e);\n }\n if (e.key === 'Escape') {\n if (searchFieldVisible && !searchTerm?.length) {\n setSearchFieldVisible(false);\n }\n }\n };\n\n return (\n <QuickSearchField\n ref={searchFieldRef}\n expanded={searchFieldVisible}\n id={`${id}_main`}\n onBlur={(event: any) => {\n if (event.relatedTarget && searchFieldRef?.current && !searchFieldRef.current.contains(event.relatedTarget) && !searchTerm) {\n setSearchFieldVisible(false);\n }\n }}\n data-testid={`${id}_main`}\n className={(searchTerm !== '' ? 'searchactive ' : '').concat(size ? size : '').concat( searchFieldVisible ? ' expanded' : '')}\n margin={margin}>\n {searchFieldVisible && (\n <SearchBarInput\n placeholder={disabled ? '' : placeholder}\n id={id}\n ref={searchFieldInputRef}\n disabled={disabled}\n onKeyDown={handleKeyDown}\n size={size}\n setSearchTerm={(term: string) => setSearchTerm(term)}\n searchTerm={searchTerm}\n enterSearch={enterSearch}\n focusParentRefs={[searchFieldRef]}\n />\n )}\n <SearchIconWrapper className={size ? size : ''} role=\"button\" aria-label={performSearchLabel} tabIndex={-1}>\n <IconButton\n id={`${id}_Searchbutton`}\n variant=\"secondary\"\n shape=\"circular\"\n tabIndex={searchFieldVisible ? -1 : 0}\n action={(e) => (searchFieldVisible ? enterSearch(e) : setSearchFieldVisible(!searchFieldVisible))}>\n <SearchIcon size=\"24px\" color={disabled ? COLORS.neutral_300 : COLORS.neutral_600} />\n </IconButton>\n </SearchIconWrapper>\n <StyledIcon className={size ? size : ''} role=\"button\" tabIndex={-1} hidden={searchTerm === '' || searchTerm === undefined || !searchFieldVisible}>\n <IconButton\n id={`${id}_Clearicon`}\n variant=\"secondary\"\n shape=\"circular\"\n action={(e) => {\n removeSearch(e);\n searchFieldInputRef?.current?.focus();\n }}>\n <ClearIcon size=\"24px\" color={disabled ? COLORS.neutral_300 : COLORS.neutral_600} />\n </IconButton>\n </StyledIcon>\n {loading && searchFieldVisible && (\n <StyledIcon className={size ? size : ''} tabIndex={-1}>\n <LoadingIndicator size={Size.Small} color={COLORS.neutral_600} />\n </StyledIcon>\n )}\n </QuickSearchField>\n );\n};\n\nexport default QuickSearch;\n"],"file":"QuickSearch.cjs"}
1
+ {"version":3,"sources":["../../src/InputFields/QuickSearch.tsx"],"names":["Wrapper","styled","div","StyledSearchField","COLORS","white","neutral_400","primary_800","QuickSearch","id","searchTerm","setSearchTerm","enterSearch","removeSearch","placeholder","performSearchLabel","disabled","onKeyDown","size","margin","loading","searchFieldRef","React","useRef","searchFieldInputRef","useState","visible","searchFieldVisible","setSearchFieldVisible","handleClickOutside","e","current","contains","target","length","handleKeyDown","key","handleBlur","relatedTarget","handleSearchIconAction","focus","detail","useEffect","document","addEventListener","removeEventListener","focusVisible","term","neutral_300","neutral_600","Size","Small"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\n\nimport IconButton from '../Button/Iconbutton';\nimport {SearchIconWrapper, StyledIcon} from './styling';\nimport {Size} from '../types';\nimport {COLORS, LoadingIndicator} from '..';\nimport {Search as SearchIcon, Clear as ClearIcon} from '../icons/systemicons/SystemIcons';\nimport SearchBarInput from './components/SearchBarInput';\nimport SearchField, {StyledSearchField} from './components/SearchField';\n\nconst Wrapper = styled.div`\n width: 100%;\n\n ${StyledSearchField} {\n transition: box-shadow 0.2s ease-in-out, width 0.2s ease-in-out;\n\n background-color: transparent;\n\n &.small {\n width: 48px;\n }\n\n &.medium {\n width: 56px;\n }\n\n &.expanded {\n width: 100%;\n }\n\n box-shadow: none;\n\n &:hover {\n box-shadow: none;\n }\n\n &.expanded {\n background-color: ${COLORS.white};\n box-shadow: inset 0 0 0 1px ${COLORS.neutral_400};\n }\n\n &.expanded:hover,\n &.expanded:focus-within {\n box-shadow: inset 0 0 0 2px ${COLORS.primary_800};\n }\n }\n`;\n\ntype QuickSearchProps = {\n id: string;\n searchTerm?: string;\n setSearchTerm: (term: string) => void;\n enterSearch: (e: any) => void;\n removeSearch: (e: any) => void;\n placeholder?: string;\n performSearchLabel?: string;\n disabled?: boolean;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n size?: Size.Small | Size.Medium;\n margin?: string;\n loading?: boolean;\n};\n\nconst QuickSearch: React.FunctionComponent<QuickSearchProps> = ({\n id,\n searchTerm,\n setSearchTerm,\n enterSearch,\n removeSearch,\n placeholder,\n performSearchLabel,\n disabled,\n onKeyDown,\n size,\n margin,\n loading,\n }: QuickSearchProps) => {\n const searchFieldRef = React.useRef<HTMLDivElement>(null);\n const searchFieldInputRef = React.useRef<HTMLInputElement>(null);\n\n const [searchFieldVisible, setSearchFieldVisible] = React.useState<{ visible: boolean, focus?: boolean }>({\n visible: false\n });\n\n const handleClickOutside = (e: any) => {\n if (searchFieldRef?.current && !searchFieldRef.current.contains(e.target)) {\n if (searchFieldVisible?.visible && !searchTerm?.length) {\n setSearchFieldVisible({visible: false});\n }\n }\n };\n\n const handleKeyDown = (e: any) => {\n if (onKeyDown) {\n onKeyDown(e);\n }\n if (e.key === 'Escape') {\n if (searchFieldVisible?.visible && !searchTerm?.length) {\n setSearchFieldVisible({visible: false});\n }\n }\n };\n\n const handleBlur = (e: any) => {\n if (!searchTerm && (!e.relatedTarget || !searchFieldRef.current?.contains(e.relatedTarget))) {\n setSearchFieldVisible({visible: false});\n }\n };\n\n const handleSearchIconAction = (e: any) => {\n if (searchFieldVisible?.visible) {\n enterSearch(searchTerm);\n } else {\n setSearchFieldVisible({\n visible: !searchFieldVisible.visible,\n focus: !searchFieldVisible.visible && e?.detail !== 1\n });\n }\n };\n\n // set search field visibility on search term change\n React.useEffect(() => {\n if (!!searchTerm?.length && !searchFieldVisible?.visible) {\n setSearchFieldVisible({visible: true, focus: false});\n }\n }, [searchTerm, searchFieldVisible]);\n\n // register click outside handler\n React.useEffect(() => {\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('click', handleClickOutside);\n };\n });\n\n // focus search input on visibility change\n React.useEffect(() => {\n if (searchFieldVisible?.visible) {\n searchFieldInputRef?.current?.focus({focusVisible: searchFieldVisible.focus} as any);\n }\n }, [searchFieldVisible.visible, searchFieldInputRef]);\n\n\n return (\n <Wrapper>\n <SearchField ref={searchFieldRef}\n id={id}\n size={size}\n searchTerm={searchTerm}\n style={{\n margin: margin,\n }}\n onBlur={handleBlur}\n className={searchFieldVisible?.visible ? 'expanded' : ''}>\n {searchFieldVisible?.visible && (\n <SearchBarInput\n placeholder={disabled ? '' : placeholder}\n id={id}\n ref={searchFieldInputRef}\n disabled={disabled}\n onKeyDown={handleKeyDown}\n size={size}\n setSearchTerm={(term: string) => setSearchTerm(term)}\n searchTerm={searchTerm}\n enterSearch={enterSearch}\n focusParentRefs={[searchFieldRef]}\n />\n )}\n <SearchIconWrapper className={size ? size : ''} role=\"button\" aria-label={performSearchLabel}>\n <IconButton\n id={`${id}_Searchbutton`}\n variant=\"secondary\"\n shape=\"circular\"\n tabIndex={searchFieldVisible?.visible ? -1 : 0}\n action={handleSearchIconAction}>\n <SearchIcon size=\"24px\" color={disabled ? COLORS.neutral_300 : COLORS.neutral_600}/>\n </IconButton>\n </SearchIconWrapper>\n <StyledIcon className={size ? size : ''} role=\"button\"\n hidden={!searchTerm || !searchFieldVisible?.visible}>\n <IconButton\n id={`${id}_Clearicon`}\n variant=\"secondary\"\n shape=\"circular\"\n action={(e) => {\n removeSearch(e);\n searchFieldInputRef?.current?.focus();\n }}>\n <ClearIcon size=\"24px\" color={disabled ? COLORS.neutral_300 : COLORS.neutral_600}/>\n </IconButton>\n </StyledIcon>\n {loading && searchFieldVisible?.visible && (\n <StyledIcon className={size ? size : ''}>\n <LoadingIndicator size={Size.Small} color={COLORS.neutral_600}/>\n </StyledIcon>\n )}\n </SearchField>\n </Wrapper>\n )\n};\n\nexport default QuickSearch;\n"],"file":"QuickSearch.cjs"}
@@ -12,16 +12,10 @@ import { Size } from '../types';
12
12
  import { COLORS, LoadingIndicator } from '..';
13
13
  import { Search as SearchIcon, Clear as ClearIcon } from '../icons/systemicons/SystemIcons';
14
14
  import SearchBarInput from './components/SearchBarInput';
15
- import { StyledSearchField } from './components/SearchField';
15
+ import SearchField, { StyledSearchField } from './components/SearchField';
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  import { jsxs as _jsxs } from "react/jsx-runtime";
18
- var QuickSearchField = styled(StyledSearchField)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", "\n -webkit-transition: box-shadow 0.2s ease-in-out, width 0.2s ease-in-out;\n transition: box-shadow 0.2s ease-in-out, width 0.2s ease-in-out;\n\n background-color: transparent;\n &.small {\n width: 48px;\n }\n\n &.medium {\n width: 56px;\n }\n \n &.expanded{\n width: 100%;\n background-color: ", ";\n }\n\n input {\n ::placeholder {\n font-style: italic;\n color: ", ";\n }\n }\n\n box-shadow: ", ";\n\n &:hover {\n box-shadow: ", ";\n }\n"])), function (props) {
19
- return props.margin ? "margin: ".concat(props.margin, ";") : '';
20
- }, COLORS.white, COLORS.neutral_600, function (props) {
21
- return props.expanded ? "inset 0px 0px 0px 2px ".concat(COLORS.primary_800) : 'none !important';
22
- }, function (props) {
23
- return props.expanded ? "inset 0px 0px 0px 2px ".concat(COLORS.primary_700) : 'none !important';
24
- });
18
+ var Wrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n width: 100%;\n\n ", " {\n transition: box-shadow 0.2s ease-in-out, width 0.2s ease-in-out;\n\n background-color: transparent;\n\n &.small {\n width: 48px;\n }\n\n &.medium {\n width: 56px;\n }\n\n &.expanded {\n width: 100%;\n }\n\n box-shadow: none;\n\n &:hover {\n box-shadow: none;\n }\n\n &.expanded {\n background-color: ", ";\n box-shadow: inset 0 0 0 1px ", ";\n }\n\n &.expanded:hover,\n &.expanded:focus-within {\n box-shadow: inset 0 0 0 2px ", ";\n }\n }\n"])), StyledSearchField, COLORS.white, COLORS.neutral_400, COLORS.primary_800);
25
19
 
26
20
  var QuickSearch = function QuickSearch(_ref) {
27
21
  var id = _ref.id,
@@ -39,121 +33,150 @@ var QuickSearch = function QuickSearch(_ref) {
39
33
  var searchFieldRef = React.useRef(null);
40
34
  var searchFieldInputRef = React.useRef(null);
41
35
 
42
- var _React$useState = React.useState(false),
36
+ var _React$useState = React.useState({
37
+ visible: false
38
+ }),
43
39
  _React$useState2 = _slicedToArray(_React$useState, 2),
44
40
  searchFieldVisible = _React$useState2[0],
45
41
  setSearchFieldVisible = _React$useState2[1];
46
42
 
47
43
  var handleClickOutside = function handleClickOutside(e) {
48
44
  if (searchFieldRef !== null && searchFieldRef !== void 0 && searchFieldRef.current && !searchFieldRef.current.contains(e.target)) {
49
- if (searchFieldVisible && !(searchTerm !== null && searchTerm !== void 0 && searchTerm.length)) {
50
- setSearchFieldVisible(false);
45
+ if (searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible && !(searchTerm !== null && searchTerm !== void 0 && searchTerm.length)) {
46
+ setSearchFieldVisible({
47
+ visible: false
48
+ });
51
49
  }
52
50
  }
53
51
  };
54
52
 
53
+ var handleKeyDown = function handleKeyDown(e) {
54
+ if (onKeyDown) {
55
+ onKeyDown(e);
56
+ }
57
+
58
+ if (e.key === 'Escape') {
59
+ if (searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible && !(searchTerm !== null && searchTerm !== void 0 && searchTerm.length)) {
60
+ setSearchFieldVisible({
61
+ visible: false
62
+ });
63
+ }
64
+ }
65
+ };
66
+
67
+ var handleBlur = function handleBlur(e) {
68
+ var _searchFieldRef$curre;
69
+
70
+ if (!searchTerm && (!e.relatedTarget || !((_searchFieldRef$curre = searchFieldRef.current) !== null && _searchFieldRef$curre !== void 0 && _searchFieldRef$curre.contains(e.relatedTarget)))) {
71
+ setSearchFieldVisible({
72
+ visible: false
73
+ });
74
+ }
75
+ };
76
+
77
+ var handleSearchIconAction = function handleSearchIconAction(e) {
78
+ if (searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible) {
79
+ enterSearch(searchTerm);
80
+ } else {
81
+ setSearchFieldVisible({
82
+ visible: !searchFieldVisible.visible,
83
+ focus: !searchFieldVisible.visible && (e === null || e === void 0 ? void 0 : e.detail) !== 1
84
+ });
85
+ }
86
+ }; // set search field visibility on search term change
87
+
88
+
55
89
  React.useEffect(function () {
56
- if (searchTerm !== null && searchTerm !== void 0 && searchTerm.length) {
57
- setSearchFieldVisible(true);
90
+ if (!!(searchTerm !== null && searchTerm !== void 0 && searchTerm.length) && !(searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible)) {
91
+ setSearchFieldVisible({
92
+ visible: true,
93
+ focus: false
94
+ });
58
95
  }
59
- }, [searchTerm]);
96
+ }, [searchTerm, searchFieldVisible]); // register click outside handler
97
+
60
98
  React.useEffect(function () {
61
99
  document.addEventListener('click', handleClickOutside);
62
100
  return function () {
63
101
  document.removeEventListener('click', handleClickOutside);
64
102
  };
65
- });
103
+ }); // focus search input on visibility change
104
+
66
105
  React.useEffect(function () {
67
- if (searchFieldVisible) {
106
+ if (searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible) {
68
107
  var _searchFieldInputRef$;
69
108
 
70
- searchFieldInputRef === null || searchFieldInputRef === void 0 ? void 0 : (_searchFieldInputRef$ = searchFieldInputRef.current) === null || _searchFieldInputRef$ === void 0 ? void 0 : _searchFieldInputRef$.focus();
71
- }
72
- }, [searchFieldVisible, searchFieldInputRef, id]);
73
-
74
- var handleKeyDown = function handleKeyDown(e) {
75
- if (onKeyDown) {
76
- onKeyDown(e);
77
- }
78
-
79
- if (e.key === 'Escape') {
80
- if (searchFieldVisible && !(searchTerm !== null && searchTerm !== void 0 && searchTerm.length)) {
81
- setSearchFieldVisible(false);
82
- }
109
+ searchFieldInputRef === null || searchFieldInputRef === void 0 ? void 0 : (_searchFieldInputRef$ = searchFieldInputRef.current) === null || _searchFieldInputRef$ === void 0 ? void 0 : _searchFieldInputRef$.focus({
110
+ focusVisible: searchFieldVisible.focus
111
+ });
83
112
  }
84
- };
85
-
86
- return /*#__PURE__*/_jsxs(QuickSearchField, {
87
- ref: searchFieldRef,
88
- expanded: searchFieldVisible,
89
- id: "".concat(id, "_main"),
90
- onBlur: function onBlur(event) {
91
- if (event.relatedTarget && searchFieldRef !== null && searchFieldRef !== void 0 && searchFieldRef.current && !searchFieldRef.current.contains(event.relatedTarget) && !searchTerm) {
92
- setSearchFieldVisible(false);
93
- }
94
- },
95
- "data-testid": "".concat(id, "_main"),
96
- className: (searchTerm !== '' ? 'searchactive ' : '').concat(size ? size : '').concat(searchFieldVisible ? ' expanded' : ''),
97
- margin: margin,
98
- children: [searchFieldVisible && /*#__PURE__*/_jsx(SearchBarInput, {
99
- placeholder: disabled ? '' : placeholder,
113
+ }, [searchFieldVisible.visible, searchFieldInputRef]);
114
+ return /*#__PURE__*/_jsx(Wrapper, {
115
+ children: /*#__PURE__*/_jsxs(SearchField, {
116
+ ref: searchFieldRef,
100
117
  id: id,
101
- ref: searchFieldInputRef,
102
- disabled: disabled,
103
- onKeyDown: handleKeyDown,
104
118
  size: size,
105
- setSearchTerm: function setSearchTerm(term) {
106
- return _setSearchTerm(term);
107
- },
108
119
  searchTerm: searchTerm,
109
- enterSearch: enterSearch,
110
- focusParentRefs: [searchFieldRef]
111
- }), /*#__PURE__*/_jsx(SearchIconWrapper, {
112
- className: size ? size : '',
113
- role: "button",
114
- "aria-label": performSearchLabel,
115
- tabIndex: -1,
116
- children: /*#__PURE__*/_jsx(IconButton, {
117
- id: "".concat(id, "_Searchbutton"),
118
- variant: "secondary",
119
- shape: "circular",
120
- tabIndex: searchFieldVisible ? -1 : 0,
121
- action: function action(e) {
122
- return searchFieldVisible ? enterSearch(e) : setSearchFieldVisible(!searchFieldVisible);
120
+ style: {
121
+ margin: margin
122
+ },
123
+ onBlur: handleBlur,
124
+ className: searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible ? 'expanded' : '',
125
+ children: [(searchFieldVisible === null || searchFieldVisible === void 0 ? void 0 : searchFieldVisible.visible) && /*#__PURE__*/_jsx(SearchBarInput, {
126
+ placeholder: disabled ? '' : placeholder,
127
+ id: id,
128
+ ref: searchFieldInputRef,
129
+ disabled: disabled,
130
+ onKeyDown: handleKeyDown,
131
+ size: size,
132
+ setSearchTerm: function setSearchTerm(term) {
133
+ return _setSearchTerm(term);
123
134
  },
124
- children: /*#__PURE__*/_jsx(SearchIcon, {
125
- size: "24px",
126
- color: disabled ? COLORS.neutral_300 : COLORS.neutral_600
135
+ searchTerm: searchTerm,
136
+ enterSearch: enterSearch,
137
+ focusParentRefs: [searchFieldRef]
138
+ }), /*#__PURE__*/_jsx(SearchIconWrapper, {
139
+ className: size ? size : '',
140
+ role: "button",
141
+ "aria-label": performSearchLabel,
142
+ children: /*#__PURE__*/_jsx(IconButton, {
143
+ id: "".concat(id, "_Searchbutton"),
144
+ variant: "secondary",
145
+ shape: "circular",
146
+ tabIndex: searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible ? -1 : 0,
147
+ action: handleSearchIconAction,
148
+ children: /*#__PURE__*/_jsx(SearchIcon, {
149
+ size: "24px",
150
+ color: disabled ? COLORS.neutral_300 : COLORS.neutral_600
151
+ })
127
152
  })
128
- })
129
- }), /*#__PURE__*/_jsx(StyledIcon, {
130
- className: size ? size : '',
131
- role: "button",
132
- tabIndex: -1,
133
- hidden: searchTerm === '' || searchTerm === undefined || !searchFieldVisible,
134
- children: /*#__PURE__*/_jsx(IconButton, {
135
- id: "".concat(id, "_Clearicon"),
136
- variant: "secondary",
137
- shape: "circular",
138
- action: function action(e) {
139
- var _searchFieldInputRef$2;
140
-
141
- removeSearch(e);
142
- searchFieldInputRef === null || searchFieldInputRef === void 0 ? void 0 : (_searchFieldInputRef$2 = searchFieldInputRef.current) === null || _searchFieldInputRef$2 === void 0 ? void 0 : _searchFieldInputRef$2.focus();
143
- },
144
- children: /*#__PURE__*/_jsx(ClearIcon, {
145
- size: "24px",
146
- color: disabled ? COLORS.neutral_300 : COLORS.neutral_600
153
+ }), /*#__PURE__*/_jsx(StyledIcon, {
154
+ className: size ? size : '',
155
+ role: "button",
156
+ hidden: !searchTerm || !(searchFieldVisible !== null && searchFieldVisible !== void 0 && searchFieldVisible.visible),
157
+ children: /*#__PURE__*/_jsx(IconButton, {
158
+ id: "".concat(id, "_Clearicon"),
159
+ variant: "secondary",
160
+ shape: "circular",
161
+ action: function action(e) {
162
+ var _searchFieldInputRef$2;
163
+
164
+ removeSearch(e);
165
+ searchFieldInputRef === null || searchFieldInputRef === void 0 ? void 0 : (_searchFieldInputRef$2 = searchFieldInputRef.current) === null || _searchFieldInputRef$2 === void 0 ? void 0 : _searchFieldInputRef$2.focus();
166
+ },
167
+ children: /*#__PURE__*/_jsx(ClearIcon, {
168
+ size: "24px",
169
+ color: disabled ? COLORS.neutral_300 : COLORS.neutral_600
170
+ })
171
+ })
172
+ }), loading && (searchFieldVisible === null || searchFieldVisible === void 0 ? void 0 : searchFieldVisible.visible) && /*#__PURE__*/_jsx(StyledIcon, {
173
+ className: size ? size : '',
174
+ children: /*#__PURE__*/_jsx(LoadingIndicator, {
175
+ size: Size.Small,
176
+ color: COLORS.neutral_600
147
177
  })
148
- })
149
- }), loading && searchFieldVisible && /*#__PURE__*/_jsx(StyledIcon, {
150
- className: size ? size : '',
151
- tabIndex: -1,
152
- children: /*#__PURE__*/_jsx(LoadingIndicator, {
153
- size: Size.Small,
154
- color: COLORS.neutral_600
155
- })
156
- })]
178
+ })]
179
+ })
157
180
  });
158
181
  };
159
182