@geneui/components 2.11.1

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 (154) hide show
  1. package/ActionableList.js +1761 -0
  2. package/AdvancedSearch.js +872 -0
  3. package/Alert.js +98 -0
  4. package/Avatar.js +77 -0
  5. package/Badge.js +76 -0
  6. package/Breadcrumb.js +128 -0
  7. package/BusyLoader.js +69 -0
  8. package/Button.js +130 -0
  9. package/CHANGELOG.md +424 -0
  10. package/Card.js +513 -0
  11. package/CardList.js +705 -0
  12. package/CellMeasurerCache-c11cec83.js +229 -0
  13. package/Charts.js +99 -0
  14. package/Checkbox.js +232 -0
  15. package/CheckboxGroup.js +206 -0
  16. package/CheckboxGroupWithSearch.js +279 -0
  17. package/Collapse.js +196 -0
  18. package/ColorPicker.js +210 -0
  19. package/ComboBox.js +99 -0
  20. package/Counter.js +99 -0
  21. package/DateFilter.js +179 -0
  22. package/DatePicker.js +1231 -0
  23. package/DatePickerInput.js +30 -0
  24. package/Divider.js +56 -0
  25. package/Drawer.js +264 -0
  26. package/Dropdown.js +99 -0
  27. package/Editor.js +22965 -0
  28. package/Empty.js +132 -0
  29. package/ExtendedInput.js +578 -0
  30. package/Form.js +116 -0
  31. package/FormContainer.js +189 -0
  32. package/FormableCheckbox.js +27 -0
  33. package/FormableDatePicker.js +39 -0
  34. package/FormableDropdown.js +105 -0
  35. package/FormableEditor.js +24 -0
  36. package/FormableHOC-21051057.js +83 -0
  37. package/FormableMultiSelectDropdown.js +105 -0
  38. package/FormableNumberInput.js +31 -0
  39. package/FormableRadio.js +23 -0
  40. package/FormableSwitcher.js +23 -0
  41. package/FormableTextInput.js +31 -0
  42. package/FormableUploader.js +40 -0
  43. package/GeneUIProvider.js +256 -0
  44. package/Grid.js +166 -0
  45. package/Holder.js +99 -0
  46. package/Icon.js +63 -0
  47. package/Image.js +130 -0
  48. package/ImagePreview.js +99 -0
  49. package/KeyValue.js +63 -0
  50. package/Label.js +58 -0
  51. package/LinkButton.js +104 -0
  52. package/Menu.js +277 -0
  53. package/MobileNavigation.js +95 -0
  54. package/MobilePopup.js +180 -0
  55. package/Modal.js +251 -0
  56. package/ModuleTitle.js +99 -0
  57. package/NavigationMenu.js +212 -0
  58. package/Notification.js +120 -0
  59. package/Option.js +186 -0
  60. package/Overlay.js +99 -0
  61. package/Overspread.js +343 -0
  62. package/Pagination.js +258 -0
  63. package/Paper.js +97 -0
  64. package/Popover-f4d1cac0.js +411 -0
  65. package/Popover.js +20 -0
  66. package/PopoverV2.js +19 -0
  67. package/Portal.js +58 -0
  68. package/Products.js +115 -0
  69. package/Profile.js +99 -0
  70. package/Progress.js +200 -0
  71. package/QRCode.js +816 -0
  72. package/README.md +90 -0
  73. package/Radio.js +152 -0
  74. package/RadioGroup.js +105 -0
  75. package/Range.js +14 -0
  76. package/RichEditor-b7928765.js +228 -0
  77. package/RichEditor.js +13 -0
  78. package/Scrollbar.js +1587 -0
  79. package/Search.js +72 -0
  80. package/SearchWithDropdown.js +195 -0
  81. package/Section.js +62 -0
  82. package/SkeletonLoader.js +82 -0
  83. package/Slider.js +256 -0
  84. package/Status.js +104 -0
  85. package/Steps.js +312 -0
  86. package/SuggestionList.js +15 -0
  87. package/Switcher.js +194 -0
  88. package/Table.js +102 -0
  89. package/TableCompositions.js +17028 -0
  90. package/Tabs.js +236 -0
  91. package/Tag.js +103 -0
  92. package/TextLink.js +22 -0
  93. package/Textarea.js +239 -0
  94. package/Time.js +63 -0
  95. package/TimePicker.js +99 -0
  96. package/Timeline.js +114 -0
  97. package/Title.js +66 -0
  98. package/Toaster.js +116 -0
  99. package/Tooltip.js +157 -0
  100. package/TransferList.js +502 -0
  101. package/Uploader.js +32 -0
  102. package/ValidatableCheckbox.js +126 -0
  103. package/ValidatableDatePicker.js +312 -0
  104. package/ValidatableDropdown.js +99 -0
  105. package/ValidatableElements.js +99 -0
  106. package/ValidatableMultiSelectDropdown.js +99 -0
  107. package/ValidatableNumberInput.js +194 -0
  108. package/ValidatableRadio.js +117 -0
  109. package/ValidatableSwitcher.js +94 -0
  110. package/ValidatableTextInput.js +164 -0
  111. package/ValidatableTimeInput.js +171 -0
  112. package/ValidatableUploader.js +94 -0
  113. package/Widget.js +99 -0
  114. package/_commonjsHelpers-24198af3.js +35 -0
  115. package/_rollupPluginBabelHelpers-e8fb2e5c.js +16 -0
  116. package/checkTimeValidation-e56771be.js +16 -0
  117. package/checkboxRadioSwitcher-5b69d7bd.js +4 -0
  118. package/clsx.m-2bb6df4b.js +3 -0
  119. package/configs-91c86664.js +96 -0
  120. package/configs.js +131 -0
  121. package/dateValidation-67caec66.js +225 -0
  122. package/debounce-4419bc2f.js +17 -0
  123. package/globalStyling-9c60a159.js +4 -0
  124. package/guid-8ddf77b3.js +16 -0
  125. package/index-00fe8887.js +193 -0
  126. package/index-0cf65939.js +30991 -0
  127. package/index-122432cd.js +270 -0
  128. package/index-262edd7a.js +77 -0
  129. package/index-5cea9a7d.js +407 -0
  130. package/index-5e722d91.js +867 -0
  131. package/index-67f4d4d1.js +6568 -0
  132. package/index-6ff23041.js +66 -0
  133. package/index-702bf24a.js +1938 -0
  134. package/index-a4635754.js +329 -0
  135. package/index-a59530cd.js +4 -0
  136. package/index-ac59cb10.js +169 -0
  137. package/index-b7a33c58.js +11 -0
  138. package/index-d9e8a888.js +987 -0
  139. package/index-e0af0caf.js +1182 -0
  140. package/index-e8776f3d.js +807 -0
  141. package/index.js +128 -0
  142. package/localization-4ba17032.js +46 -0
  143. package/objectWithoutPropertiesLoose-299691d8.js +78 -0
  144. package/package.json +190 -0
  145. package/rangeAndSlider-20599da4.js +8839 -0
  146. package/react-beautiful-dnd.esm-38c37304.js +10117 -0
  147. package/style-inject.es-746bb8ed.js +28 -0
  148. package/useClickOutside-5183e396.js +25 -0
  149. package/useDeviceType-dd51db38.js +15 -0
  150. package/useEllipsisDetection-ef536015.js +23 -0
  151. package/useKeyDown-38102ae7.js +21 -0
  152. package/useMount-6fef51a5.js +9 -0
  153. package/useWidth-9f4647f8.js +15 -0
  154. package/useWindowSize-80369d76.js +33 -0
@@ -0,0 +1,872 @@
1
+ import { _ as _extends } from './_rollupPluginBabelHelpers-e8fb2e5c.js';
2
+ import React__default, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
3
+ import { p as propTypesExports } from './index-e0af0caf.js';
4
+ import { c as classnames } from './index-6ff23041.js';
5
+ import { a as dayjs } from './dateValidation-67caec66.js';
6
+ import ExtendedInput from './ExtendedInput.js';
7
+ import { P as PopoverV2 } from './index-702bf24a.js';
8
+ import CustomScrollbar from './Scrollbar.js';
9
+ import Checkbox from './Checkbox.js';
10
+ import Icon from './Icon.js';
11
+ import { u as useEllipsisDetection } from './useEllipsisDetection-ef536015.js';
12
+ import Tooltip from './Tooltip.js';
13
+ import { n as noop } from './index-b7a33c58.js';
14
+ import LinkButton from './LinkButton.js';
15
+ import SkeletonLoader from './SkeletonLoader.js';
16
+ import Badge from './Badge.js';
17
+ import Button from './Button.js';
18
+ import Empty from './Empty.js';
19
+ import { advancedSearchConfig } from './configs.js';
20
+ import 'react-dom';
21
+ import { u as useKeyDown } from './useKeyDown-38102ae7.js';
22
+ import './configs-91c86664.js';
23
+ import { s as styleInject } from './style-inject.es-746bb8ed.js';
24
+ import './_commonjsHelpers-24198af3.js';
25
+ import './index-ac59cb10.js';
26
+ import './useDeviceType-dd51db38.js';
27
+ import './useWindowSize-80369d76.js';
28
+ import './index-5cea9a7d.js';
29
+ import './useClickOutside-5183e396.js';
30
+ import './globalStyling-9c60a159.js';
31
+ import './Popover-f4d1cac0.js';
32
+ import './GeneUIProvider.js';
33
+ import './index-122432cd.js';
34
+ import './debounce-4419bc2f.js';
35
+ import './checkboxRadioSwitcher-5b69d7bd.js';
36
+ import './guid-8ddf77b3.js';
37
+
38
+ const useDebounce = (value, delay) => {
39
+ const [debouncedValue, setDebouncedValue] = useState(value);
40
+ useEffect(() => {
41
+ const handler = setTimeout(() => {
42
+ setDebouncedValue(value);
43
+ }, delay);
44
+ return () => {
45
+ clearTimeout(handler);
46
+ };
47
+ }, [delay, value]);
48
+ return debouncedValue;
49
+ };
50
+
51
+ function ListElementWithCheckbox(_ref) {
52
+ let {
53
+ item,
54
+ onSelect
55
+ } = _ref;
56
+ const {
57
+ checked,
58
+ icon,
59
+ name
60
+ } = item;
61
+ const checkboxRef = useRef(null);
62
+ const [isFocused, setIsFocused] = useState(false);
63
+ const nameRef = useRef(null);
64
+ const isNameTruncated = useEllipsisDetection(nameRef);
65
+
66
+ // Handle blur event to clear focus state
67
+ const handleBlur = useCallback(() => setIsFocused(false), []);
68
+
69
+ // Handle Focus event to add focus state
70
+ const handleFocus = useCallback(() => setIsFocused(true), []);
71
+ return /*#__PURE__*/React__default.createElement("li", {
72
+ className: classnames('listElementWithCheckbox', {
73
+ 'listElementWithCheckbox-hover': isFocused
74
+ })
75
+ }, /*#__PURE__*/React__default.createElement("label", {
76
+ className: "listElementWithCheckbox__label"
77
+ }, item.hasOwnProperty('checked') && /*#__PURE__*/React__default.createElement(Checkbox, {
78
+ ref: checkboxRef,
79
+ checked: checked,
80
+ onChange: () => {
81
+ onSelect(item);
82
+ },
83
+ className: "listElementWithCheckbox__checkbox",
84
+ onBlur: handleBlur,
85
+ onFocus: handleFocus
86
+ }), icon && /*#__PURE__*/React__default.createElement(Icon, {
87
+ type: icon,
88
+ className: "listElementWithCheckbox__icon"
89
+ }), name && /*#__PURE__*/React__default.createElement(Tooltip, {
90
+ text: name,
91
+ isVisible: isNameTruncated
92
+ }, /*#__PURE__*/React__default.createElement("span", {
93
+ className: "listElementWithCheckbox__name ellipsis-text",
94
+ ref: nameRef
95
+ }, name))));
96
+ }
97
+ ListElementWithCheckbox.defaultProps = {
98
+ onSelect: noop,
99
+ item: {
100
+ checked: false
101
+ }
102
+ };
103
+ ListElementWithCheckbox.propTypes = {
104
+ item: propTypesExports.shape({
105
+ name: propTypesExports.string,
106
+ value: propTypesExports.string,
107
+ checked: propTypesExports.bool,
108
+ icon: propTypesExports.string
109
+ })
110
+ };
111
+
112
+ function SearchResultRow(_ref) {
113
+ let {
114
+ element
115
+ } = _ref;
116
+ const {
117
+ icon,
118
+ id,
119
+ title,
120
+ name,
121
+ date,
122
+ actions
123
+ } = element;
124
+ const [isFocused, setIsFocused] = useState(false);
125
+ const titleRef = useRef(null);
126
+ const isTitleTruncated = useEllipsisDetection(titleRef);
127
+ const nameRef = useRef(null);
128
+ const isNameTruncated = useEllipsisDetection(nameRef);
129
+
130
+ // Handle blur event to clear focus state
131
+ const handleBlur = useCallback(() => setIsFocused(false), [element]);
132
+
133
+ // Handle Focus event to add focus state
134
+ const handleFocus = useCallback(() => setIsFocused(true), [element]);
135
+ return /*#__PURE__*/React__default.createElement("li", {
136
+ className: classnames('searchResultRow', {
137
+ 'searchResultRow-hover': isFocused
138
+ })
139
+ }, icon && /*#__PURE__*/React__default.createElement(Icon, {
140
+ type: element.icon,
141
+ className: "searchResultRow__icon"
142
+ }), /*#__PURE__*/React__default.createElement("div", {
143
+ className: "searchResultRow__info"
144
+ }, (id || title) && /*#__PURE__*/React__default.createElement("div", {
145
+ className: "searchResultRow__titleWrapper"
146
+ }, id && /*#__PURE__*/React__default.createElement("span", {
147
+ className: "searchResultRow__id"
148
+ }, id), title && /*#__PURE__*/React__default.createElement(Tooltip, {
149
+ text: title,
150
+ isVisible: isTitleTruncated
151
+ }, /*#__PURE__*/React__default.createElement("span", {
152
+ className: "searchResultRow__title ellipsis-text",
153
+ ref: titleRef
154
+ }, title))), (name || date) && /*#__PURE__*/React__default.createElement("div", {
155
+ className: "searchResultRow__nameWrapper"
156
+ }, name && /*#__PURE__*/React__default.createElement(Tooltip, {
157
+ text: name,
158
+ isVisible: isNameTruncated
159
+ }, /*#__PURE__*/React__default.createElement("span", {
160
+ className: "searchResultRow__name ellipsis-text",
161
+ ref: nameRef
162
+ }, name)), name && date && /*#__PURE__*/React__default.createElement(Icon, {
163
+ type: "bc-icon-dot",
164
+ className: "searchResultRow__dateSeparator"
165
+ }), date && /*#__PURE__*/React__default.createElement("div", {
166
+ className: "searchResultRow__dateWrapper"
167
+ }, date.labelText && /*#__PURE__*/React__default.createElement("span", {
168
+ className: "searchResultRow__dateText"
169
+ }, date.labelText), date.date && /*#__PURE__*/React__default.createElement("span", {
170
+ className: "searchResultRow__date"
171
+ }, date.date)))), /*#__PURE__*/React__default.createElement("div", {
172
+ className: classnames('searchResultRow__actions', {
173
+ 'searchResultRow__actions-hover': isFocused
174
+ })
175
+ }, actions === null || actions === void 0 ? void 0 : actions.map((action, index) => /*#__PURE__*/React__default.createElement(Button, {
176
+ key: index,
177
+ tabIndex: 0,
178
+ size: "medium",
179
+ icon: action.icon,
180
+ onBlur: handleBlur,
181
+ appearance: "minimal",
182
+ onFocus: handleFocus,
183
+ cornerRadius: "smooth",
184
+ onClick: action.onClick(element),
185
+ className: "searchResultRow__action",
186
+ ariaLabel: action.name || action.icon
187
+ }))));
188
+ }
189
+ SearchResultRow.defaultProps = {
190
+ element: {}
191
+ };
192
+ SearchResultRow.propTypes = {
193
+ element: propTypesExports.shape({
194
+ icon: propTypesExports.string,
195
+ id: propTypesExports.string,
196
+ title: propTypesExports.string,
197
+ type: propTypesExports.string,
198
+ name: propTypesExports.string,
199
+ date: propTypesExports.shape({
200
+ labelText: propTypesExports.string,
201
+ date: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number])
202
+ }),
203
+ actions: propTypesExports.arrayOf(propTypesExports.shape({
204
+ name: propTypesExports.string,
205
+ icon: propTypesExports.string,
206
+ onClick: propTypesExports.func
207
+ }))
208
+ })
209
+ };
210
+
211
+ function SearchResult(_ref) {
212
+ let {
213
+ data,
214
+ totalCount,
215
+ noDataText,
216
+ initialData,
217
+ showMoreText,
218
+ totalCountMax,
219
+ totalCountText,
220
+ onShowMoreClick,
221
+ isSearchLoading,
222
+ showMoreIsLoading,
223
+ hasActiveShowMore,
224
+ initialDataDescription
225
+ } = _ref;
226
+ const listRef = useRef(null);
227
+ const scrollbarRef = useRef(null);
228
+ const [ableToScroll, setAbleToScroll] = useState(false);
229
+ const [dataLengthSnapshots, setDataLengthSnapshots] = useState([]);
230
+ const [elementTopToScroll, setElementTopToScroll] = useState(0);
231
+ const onShowMoreHandler = useCallback(e => {
232
+ onShowMoreClick(e);
233
+ setAbleToScroll(true);
234
+ }, []);
235
+ useEffect(() => {
236
+ setDataLengthSnapshots(prev => [...prev, data.length]);
237
+ }, [data.length]);
238
+ useEffect(() => {
239
+ var _listRef$current, _listRef$current$chil;
240
+ // Formula for getting the top of the element and adding 29px for showing showMore link and half of the last visible row.
241
+ const scrollToElementTop = +(listRef === null || listRef === void 0 ? void 0 : (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : (_listRef$current$chil = _listRef$current.children[dataLengthSnapshots[dataLengthSnapshots.length - 2] - 1]) === null || _listRef$current$chil === void 0 ? void 0 : _listRef$current$chil.offsetTop) + 29;
242
+ if (!isSearchLoading && ableToScroll) {
243
+ setElementTopToScroll(scrollToElementTop);
244
+ setAbleToScroll(false);
245
+ }
246
+ }, [isSearchLoading]);
247
+ return /*#__PURE__*/React__default.createElement("div", {
248
+ className: "searchResult"
249
+ }, isSearchLoading && /*#__PURE__*/React__default.createElement(SkeletonSet, {
250
+ searchResult: true,
251
+ count: 8
252
+ }), /*#__PURE__*/React__default.createElement(CustomScrollbar, {
253
+ autoHeightMax: 500,
254
+ className: classnames('searchResult__scrollbar', {
255
+ 'searchResult__scrollbar-loading': isSearchLoading
256
+ }),
257
+ ref: scrollbarRef,
258
+ scrollTop: elementTopToScroll,
259
+ withSmoothScroll: true
260
+ }, /*#__PURE__*/React__default.createElement("div", {
261
+ className: "searchResult__header"
262
+ }, /*#__PURE__*/React__default.createElement("span", {
263
+ className: "searchResult__text"
264
+ }, totalCount > 0 && totalCountText || initialData.length > 0 && initialDataDescription), totalCount > 0 && /*#__PURE__*/React__default.createElement(Badge, {
265
+ className: "searchResult__badge",
266
+ count: totalCount,
267
+ maxCount: totalCountMax,
268
+ size: "default",
269
+ color: "primary"
270
+ })), (data === null || data === void 0 ? void 0 : data.length) > 0 || initialData.length > 0 ? /*#__PURE__*/React__default.createElement("ul", {
271
+ className: "searchResult__list",
272
+ role: "navigation",
273
+ ref: listRef
274
+ }, initialData.length > 0 ? initialData.map((elem, index) => /*#__PURE__*/React__default.createElement(SearchResultRow, {
275
+ key: index,
276
+ element: elem
277
+ })) : data === null || data === void 0 ? void 0 : data.map((elem, index) => /*#__PURE__*/React__default.createElement(SearchResultRow, {
278
+ key: index,
279
+ element: elem
280
+ })), hasActiveShowMore && /*#__PURE__*/React__default.createElement("li", {
281
+ className: "searchResult__showMoreLi"
282
+ }, /*#__PURE__*/React__default.createElement(LinkButton, {
283
+ tabIndex: 0,
284
+ ariaLabel: showMoreText,
285
+ onClick: onShowMoreHandler,
286
+ className: "searchResult__showMoreLink"
287
+ }, showMoreText))) : /*#__PURE__*/React__default.createElement(Empty, {
288
+ appearance: "without-circles",
289
+ title: noDataText,
290
+ type: "search",
291
+ className: "searchResult__empty"
292
+ })));
293
+ }
294
+ SearchResult.defaultProps = {
295
+ initialDataDescription: 'initial data description',
296
+ isSearchLoading: false,
297
+ showMoreIsLoading: false
298
+ };
299
+ SearchResult.propTypes = {
300
+ /**
301
+ * total count of data to show in badge
302
+ */
303
+ totalCount: propTypesExports.number,
304
+ /**
305
+ * text for no data to display
306
+ */
307
+ noDataText: propTypesExports.string,
308
+ /**
309
+ * If search field is empty, will show initialData for example (Recently modified data).
310
+ */
311
+ initialData: propTypesExports.arrayOf(propTypesExports.shape({
312
+ icon: propTypesExports.string,
313
+ id: propTypesExports.string,
314
+ title: propTypesExports.string,
315
+ type: propTypesExports.string,
316
+ name: propTypesExports.string,
317
+ date: propTypesExports.shape({
318
+ labelText: propTypesExports.string,
319
+ date: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number])
320
+ }),
321
+ actions: propTypesExports.arrayOf(propTypesExports.shape({
322
+ name: propTypesExports.string,
323
+ icon: propTypesExports.string,
324
+ onClick: propTypesExports.func
325
+ }))
326
+ })),
327
+ /**
328
+ * text for link under search result
329
+ */
330
+ showMoreText: propTypesExports.string,
331
+ /**
332
+ * total max count of data to show totalCountMax+ in badge
333
+ */
334
+ totalCountMax: propTypesExports.number,
335
+ /**
336
+ * label text for badge component
337
+ */
338
+ totalCountText: propTypesExports.string,
339
+ /**
340
+ * Fires an event when clicked on link under search result
341
+ */
342
+ onShowMoreClick: propTypesExports.func,
343
+ /**
344
+ * To control showMore loading state
345
+ */
346
+ showMoreIsLoading: propTypesExports.bool,
347
+ /**
348
+ * search loading state
349
+ */
350
+ isSearchLoading: propTypesExports.bool,
351
+ /**
352
+ * if hasActive hasActiveShowMore is true you will see show more link under search result
353
+ */
354
+ hasActiveShowMore: propTypesExports.bool,
355
+ /**
356
+ * If search field is empty, initialDataDescription is describing witch data is showing by default for example (Recently modified data).
357
+ */
358
+ initialDataDescription: propTypesExports.string,
359
+ /**
360
+ * data structure
361
+ * */
362
+ data: propTypesExports.arrayOf(propTypesExports.shape({
363
+ icon: propTypesExports.string,
364
+ id: propTypesExports.string,
365
+ title: propTypesExports.string,
366
+ type: propTypesExports.string,
367
+ name: propTypesExports.string,
368
+ date: propTypesExports.shape({
369
+ labelText: propTypesExports.string,
370
+ date: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number])
371
+ }),
372
+ actions: propTypesExports.arrayOf(propTypesExports.shape({
373
+ name: propTypesExports.string,
374
+ icon: propTypesExports.string,
375
+ onClick: propTypesExports.func
376
+ }))
377
+ }))
378
+ };
379
+
380
+ function SkeletonSet(_ref) {
381
+ let {
382
+ count,
383
+ searchResult
384
+ } = _ref;
385
+ return searchResult ? /*#__PURE__*/React__default.createElement("ul", {
386
+ className: "skeleton"
387
+ }, Array(count || 1).fill('').map((_, i) => /*#__PURE__*/React__default.createElement("li", {
388
+ className: "skeleton__searchElement",
389
+ key: i
390
+ }, /*#__PURE__*/React__default.createElement(SkeletonLoader, {
391
+ duration: +"".concat(2, ".0", i),
392
+ width: "100%",
393
+ isBusy: true
394
+ })))) : /*#__PURE__*/React__default.createElement("ul", null, Array(count || 1).fill('').map((_, i) => /*#__PURE__*/React__default.createElement("li", {
395
+ className: "skeleton__filter",
396
+ key: i
397
+ }, /*#__PURE__*/React__default.createElement(SkeletonLoader, {
398
+ duration: 2,
399
+ height: "23px",
400
+ width: "23px",
401
+ isBusy: true
402
+ }), /*#__PURE__*/React__default.createElement("span", {
403
+ style: {
404
+ width: '10px'
405
+ }
406
+ }), /*#__PURE__*/React__default.createElement(SkeletonLoader, {
407
+ duration: +"".concat(2, ".0", i),
408
+ height: "23px",
409
+ width: "".concat(Math.floor(Math.random() * 51) + 50, "%"),
410
+ isBusy: true
411
+ }))));
412
+ }
413
+ SkeletonSet.defaultProps = {};
414
+ SkeletonSet.propTypes = {};
415
+
416
+ function FilterList(_ref) {
417
+ let {
418
+ data,
419
+ skeletonCount,
420
+ onSelect
421
+ } = _ref;
422
+ const {
423
+ data: filterData,
424
+ isLoading,
425
+ onShowMoreClick,
426
+ showMoreIsLoading,
427
+ sectionNameText,
428
+ hasActiveShowMore,
429
+ showMoreText
430
+ } = data;
431
+ const listRef = useRef(null);
432
+ const scrollbarRef = useRef(null);
433
+ const [ableToScroll, setAbleToScroll] = useState(false);
434
+ const [dataLengthSnapshots, setDataLengthSnapshots] = useState([]);
435
+ const [elementTopToScroll, setElementTopToScroll] = useState(0);
436
+ const onShowMoreHandler = useCallback(e => {
437
+ onShowMoreClick(e);
438
+ setAbleToScroll(true);
439
+ }, []);
440
+ useEffect(() => {
441
+ setDataLengthSnapshots(prev => [...prev, filterData === null || filterData === void 0 ? void 0 : filterData.length]);
442
+ }, [filterData === null || filterData === void 0 ? void 0 : filterData.length]);
443
+ useEffect(() => {
444
+ var _listRef$current, _listRef$current$chil;
445
+ const scrollToElementTop = +(listRef === null || listRef === void 0 ? void 0 : (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : (_listRef$current$chil = _listRef$current.children[dataLengthSnapshots[(dataLengthSnapshots === null || dataLengthSnapshots === void 0 ? void 0 : dataLengthSnapshots.length) - 1] - 1]) === null || _listRef$current$chil === void 0 ? void 0 : _listRef$current$chil.offsetTop);
446
+ if (!isLoading && ableToScroll) {
447
+ setElementTopToScroll(scrollToElementTop);
448
+ setAbleToScroll(false);
449
+ }
450
+ }, [isLoading]);
451
+ return /*#__PURE__*/React__default.createElement("div", {
452
+ className: "filterList__filter"
453
+ }, /*#__PURE__*/React__default.createElement(CustomScrollbar, {
454
+ autoHeightMax: 500,
455
+ className: "filterList__scrollbar",
456
+ style: {
457
+ height: '100%'
458
+ },
459
+ ref: scrollbarRef,
460
+ scrollTop: elementTopToScroll,
461
+ withSmoothScroll: true
462
+ }, /*#__PURE__*/React__default.createElement("h6", {
463
+ className: "filterList__filterHeader"
464
+ }, sectionNameText), /*#__PURE__*/React__default.createElement("ul", {
465
+ className: "filterList__filterList",
466
+ ref: listRef
467
+ }, isLoading ? /*#__PURE__*/React__default.createElement(SkeletonSet, {
468
+ count: skeletonCount
469
+ }) : filterData === null || filterData === void 0 ? void 0 : filterData.map((item, index) => /*#__PURE__*/React__default.createElement(ListElementWithCheckbox, {
470
+ key: index,
471
+ onSelect: onSelect,
472
+ item: item
473
+ })), hasActiveShowMore && /*#__PURE__*/React__default.createElement("li", {
474
+ className: "filterList__showMoreLi"
475
+ }, /*#__PURE__*/React__default.createElement(LinkButton, {
476
+ tabIndex: 0,
477
+ ariaLabel: showMoreText,
478
+ onClick: onShowMoreHandler,
479
+ className: "filterList__showMoreLink"
480
+ }, showMoreText)))));
481
+ }
482
+ FilterList.defaultProps = {
483
+ data: {
484
+ data: []
485
+ },
486
+ onSelect: noop,
487
+ skeletonCount: 5,
488
+ showMoreIsLoading: false
489
+ };
490
+ FilterList.propTypes = {
491
+ /**
492
+ * data structure for secondary filter
493
+ */
494
+ data: propTypesExports.shape({
495
+ sectionNameText: propTypesExports.string,
496
+ onChange: propTypesExports.func,
497
+ hasActiveShowMore: propTypesExports.bool,
498
+ showMoreText: propTypesExports.string,
499
+ showMoreIsLoading: propTypesExports.bool,
500
+ onShowMoreClick: propTypesExports.func,
501
+ isLoading: propTypesExports.bool,
502
+ data: propTypesExports.arrayOf(propTypesExports.shape({
503
+ name: propTypesExports.string,
504
+ value: propTypesExports.string,
505
+ checked: propTypesExports.bool,
506
+ icon: propTypesExports.string
507
+ }))
508
+ }),
509
+ skeleton: propTypesExports.element,
510
+ onSelect: propTypesExports.func,
511
+ skeletonCount: propTypesExports.number
512
+ };
513
+
514
+ function Content(_ref) {
515
+ let {
516
+ data,
517
+ totalCount,
518
+ noDataText,
519
+ initialData,
520
+ showMoreText,
521
+ totalCountMax,
522
+ totalCountText,
523
+ isSearchLoading,
524
+ onShowMoreClick,
525
+ hasActiveShowMore,
526
+ primaryFilterData,
527
+ secondaryFilterData,
528
+ initialDataDescription
529
+ } = _ref;
530
+ const [clonedPrimaryFilterData, setClonedPrimaryFilterData] = useState({
531
+ ...primaryFilterData
532
+ });
533
+ const [clonedSecondaryFilterData, setClonedSecondaryFilterData] = useState({
534
+ ...secondaryFilterData
535
+ });
536
+ useEffect(() => setClonedPrimaryFilterData({
537
+ ...primaryFilterData
538
+ }), [primaryFilterData]);
539
+ useEffect(() => setClonedSecondaryFilterData({
540
+ ...secondaryFilterData
541
+ }), [secondaryFilterData]);
542
+ const newFilterData = useCallback((clonedData, selectedElement) => ({
543
+ ...clonedData,
544
+ data: clonedData === null || clonedData === void 0 ? void 0 : clonedData.data.map(elem => {
545
+ if (elem.name === selectedElement.name) {
546
+ elem.checked = !elem.checked;
547
+ }
548
+ return elem;
549
+ })
550
+ }), []);
551
+ const handleSelectPrimary = useCallback(selectedElement => {
552
+ const newPrimaryFilterData = newFilterData(clonedPrimaryFilterData, selectedElement);
553
+ setClonedPrimaryFilterData(newPrimaryFilterData);
554
+ primaryFilterData.onChange(newPrimaryFilterData.data);
555
+ }, [clonedPrimaryFilterData]);
556
+ const handleSelectSecondary = useCallback(selectedElement => {
557
+ const newSecondaryFilterData = newFilterData(clonedSecondaryFilterData, selectedElement);
558
+ setClonedSecondaryFilterData(newSecondaryFilterData);
559
+ secondaryFilterData.onChange(newSecondaryFilterData.data);
560
+ }, [clonedSecondaryFilterData.data]);
561
+ const skeletonCount = useMemo(() => primaryFilterData && secondaryFilterData ? 5 : 11, [primaryFilterData, secondaryFilterData]);
562
+ return /*#__PURE__*/React__default.createElement("div", {
563
+ className: "advancedSearch__content"
564
+ }, /*#__PURE__*/React__default.createElement("div", {
565
+ className: classnames('advancedSearch__searchResult', {
566
+ 'advancedSearch__searchResult-border': primaryFilterData || secondaryFilterData
567
+ })
568
+ }, /*#__PURE__*/React__default.createElement(SearchResult, {
569
+ data: data,
570
+ noDataText: noDataText,
571
+ totalCount: totalCount,
572
+ initialData: initialData,
573
+ showMoreText: showMoreText,
574
+ totalCountMax: totalCountMax,
575
+ totalCountText: totalCountText,
576
+ onShowMoreClick: onShowMoreClick,
577
+ isSearchLoading: isSearchLoading,
578
+ hasActiveShowMore: hasActiveShowMore,
579
+ initialDataDescription: initialDataDescription
580
+ })), (primaryFilterData || secondaryFilterData) && /*#__PURE__*/React__default.createElement("div", {
581
+ className: "advancedSearch__filters"
582
+ }, primaryFilterData && /*#__PURE__*/React__default.createElement(FilterList, {
583
+ data: primaryFilterData,
584
+ skeletonCount: skeletonCount,
585
+ onSelect: handleSelectPrimary
586
+ }), secondaryFilterData && primaryFilterData && /*#__PURE__*/React__default.createElement("div", {
587
+ className: "advancedSearch__divider"
588
+ }), secondaryFilterData && /*#__PURE__*/React__default.createElement(FilterList, {
589
+ data: secondaryFilterData,
590
+ skeletonCount: skeletonCount,
591
+ onSelect: handleSelectSecondary
592
+ })));
593
+ }
594
+ Content.defaultProps = {};
595
+ Content.propTypes = {};
596
+
597
+ var css_248z = "[data-gene-ui-version=\"2.11.0\"] .advancedSearch{margin-left:auto;margin-right:0;min-height:3.6rem;min-width:10rem;position:relative;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}[data-gene-ui-version=\"2.11.0\"] .advancedSearch-left{margin-left:0;margin-right:auto}[data-gene-ui-version=\"2.11.0\"] .advancedSearch__wrapper{color:rgba(var(--background-sc-rgb),.75);left:auto;max-width:var(--advanced-search-width);position:absolute;right:0;top:0;width:100vw}[data-gene-ui-version=\"2.11.0\"] .advancedSearch__wrapper-left{left:0;right:auto}[data-gene-ui-version=\"2.11.0\"] .advancedSearch__popover{min-height:50rem;width:var(--advanced-search-width)}[data-gene-ui-version=\"2.11.0\"] .advancedSearch__content{color:rgba(var(--background-sc-rgb),.75);display:flex;height:52rem;justify-content:space-between;max-height:50rem!important}[data-gene-ui-version=\"2.11.0\"] .advancedSearch__searchResult{flex-grow:3;height:auto;max-height:100%}[data-gene-ui-version=\"2.11.0\"] .advancedSearch__searchResult-border{border-left:none;border-right:1px solid rgba(var(--background-sc-rgb),.3)}[data-gene-ui-version=\"2.11.0\"] [dir=rtl] .advancedSearch__searchResult-border{border-left:1px solid rgba(var(--background-sc-rgb),.3);border-right:none}[data-gene-ui-version=\"2.11.0\"] .advancedSearch__filters{width:27rem}[data-gene-ui-version=\"2.11.0\"] .advancedSearch__divider{border-bottom:1px solid rgba(var(--background-sc-rgb),.3)}[data-gene-ui-version=\"2.11.0\"] .filterList__filter{height:50%;min-height:50%;padding:.8rem 0;padding-inline-end:0;width:100%}[data-gene-ui-version=\"2.11.0\"] .filterList__filterHeader{font-size:1.2rem;padding:.8rem}[data-gene-ui-version=\"2.11.0\"] .filterList__filterList{display:flex;flex-direction:column}[data-gene-ui-version=\"2.11.0\"] .filterList__showMoreLi{margin:.8rem}[data-gene-ui-version=\"2.11.0\"] .filterList__showMoreLink{padding:.4rem .8rem}[data-gene-ui-version=\"2.11.0\"] .listElementWithCheckbox{align-items:center;display:flex;flex-wrap:nowrap;height:4rem;padding:0 1.6rem}[data-gene-ui-version=\"2.11.0\"] .listElementWithCheckbox-hover,[data-gene-ui-version=\"2.11.0\"] .listElementWithCheckbox:hover{background:rgba(var(--background-sc-rgb),.03)}[data-gene-ui-version=\"2.11.0\"] .listElementWithCheckbox__label{align-items:center;cursor:pointer;display:flex;-webkit-user-select:none;user-select:none;width:100%}[data-gene-ui-version=\"2.11.0\"] .listElementWithCheckbox__icon,[data-gene-ui-version=\"2.11.0\"] .listElementWithCheckbox__name{margin-inline-start:.8rem}[data-gene-ui-version=\"2.11.0\"] .searchResult{height:100%;padding:.8rem 0;padding-inline-end:0;position:relative}[data-gene-ui-version=\"2.11.0\"] .searchResult__scrollbar{height:100%}[data-gene-ui-version=\"2.11.0\"] .searchResult__scrollbar-loading{visibility:hidden}[data-gene-ui-version=\"2.11.0\"] .searchResult__header{align-items:center;display:flex;justify-content:flex-start;padding:.8rem;width:100%}[data-gene-ui-version=\"2.11.0\"] .searchResult__list{width:100%}[data-gene-ui-version=\"2.11.0\"] .searchResult__text{font-size:1.2rem}[data-gene-ui-version=\"2.11.0\"] .searchResult__badge{margin-inline-start:.8rem}[data-gene-ui-version=\"2.11.0\"] .searchResult__showMoreLi{margin:.8rem;padding:.8rem 0;padding-inline-start:.8rem}[data-gene-ui-version=\"2.11.0\"] .searchResult__showMoreLink{padding:.4rem}[data-gene-ui-version=\"2.11.0\"] .searchResult__empty{height:calc(100% - 5.5rem)}[data-gene-ui-version=\"2.11.0\"] .searchResultRow{align-items:center;display:flex;height:4.5rem;justify-content:space-between;margin:.4rem 0;max-width:100%;padding:.4rem .8rem;width:100%}[data-gene-ui-version=\"2.11.0\"] .searchResultRow-hover,[data-gene-ui-version=\"2.11.0\"] .searchResultRow:hover{background:rgba(var(--background-sc-rgb),.03)}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__icon{padding:0 .8rem}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__info{display:flex;flex-direction:column;flex-grow:2;height:100%;justify-content:space-between;overflow:hidden;padding-inline-start:.8rem;width:100%}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__titleWrapper{align-items:center;display:flex;font-weight:600}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__id{color:rgba(var(--background-sc-rgb),.6);margin-inline-end:.8rem}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__title{color:var(--background-sc-rgb)}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__nameWrapper{align-items:center;color:rgba(var(--background-sc-rgb),.6);display:flex;flex-wrap:nowrap}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__name{font-size:1.2rem;white-space:nowrap}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__dateSeparator{font-size:1.2rem;padding-top:.3rem}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__dateWrapper{align-items:center;display:flex;font-size:1rem;padding-top:.3rem}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__dateText{font-style:italic;margin-inline-end:.4rem}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__actions{display:flex;height:100%}[data-gene-ui-version=\"2.11.0\"] .searchResultRow__action{color:var(--hero);cursor:pointer;margin:0 .4rem}[data-gene-ui-version=\"2.11.0\"] .skeleton{height:100%;left:0;position:absolute;top:0;width:100%}[data-gene-ui-version=\"2.11.0\"] .skeleton__filter{align-items:center;display:flex;flex-wrap:nowrap;height:4rem;padding:0 .8rem}[data-gene-ui-version=\"2.11.0\"] .skeleton__searchElement{align-items:center;display:flex;height:44px;margin:1.5rem .8rem;padding-inline-end:.8rem}";
598
+ styleInject(css_248z);
599
+
600
+ function AdvancedSearch(_ref) {
601
+ let {
602
+ data,
603
+ position,
604
+ onSearch,
605
+ totalCount,
606
+ noDataText,
607
+ initialData,
608
+ showMoreText,
609
+ totalCountMax,
610
+ totalCountText,
611
+ onShowMoreClick,
612
+ isSearchLoading,
613
+ openedInputWidth,
614
+ closedInputWidth,
615
+ hasActiveShowMore,
616
+ primaryFilterData,
617
+ secondaryFilterData,
618
+ extendedInputConfigs,
619
+ initialDataDescription
620
+ } = _ref;
621
+ const parentRef = useRef(null);
622
+ const searchRef = useRef(null);
623
+ const [popoverOpen, setPopoverOpen] = useState(false);
624
+ const [initialDataState, setInitialDataState] = useState([]);
625
+ const [searchValue, setSearchValue] = useState(null);
626
+ const debouncedSearchValue = useDebounce(searchValue, 300);
627
+ useEffect(() => {
628
+ if (debouncedSearchValue === null) return;
629
+ onSearch(debouncedSearchValue);
630
+ }, [debouncedSearchValue]);
631
+ const openPopoverHandler = e => {
632
+ e && (e.currentTarget.onFocus = true);
633
+ if (!popoverOpen) setPopoverOpen(true);
634
+ };
635
+ const closePopoverHandler = useCallback(() => setPopoverOpen(false), []);
636
+ useKeyDown(e => {
637
+ var _searchRef$current;
638
+ switch (e.key) {
639
+ case 'Escape':
640
+ (searchRef === null || searchRef === void 0 ? void 0 : searchRef.current) && (searchRef === null || searchRef === void 0 ? void 0 : (_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 ? void 0 : _searchRef$current.blur());
641
+ closePopoverHandler();
642
+ break;
643
+ }
644
+ }, [close, focus, blur, popoverOpen], parentRef, ['Escape']);
645
+
646
+ // initial data setter
647
+ useEffect(() => {
648
+ setInitialDataState((debouncedSearchValue === null || debouncedSearchValue === void 0 ? void 0 : debouncedSearchValue.length) > 0 ? [] : initialData);
649
+ }, [debouncedSearchValue]);
650
+ const inputAndPopoverWidthVariable = useMemo(() => ({
651
+ '--advanced-search-width': popoverOpen ? "".concat(openedInputWidth, "vw") : closedInputWidth
652
+ }), [popoverOpen]);
653
+ return /*#__PURE__*/React__default.createElement("div", {
654
+ className: classnames('advancedSearch', {
655
+ 'advancedSearch-left': position === advancedSearchConfig.positions.left
656
+ })
657
+ }, /*#__PURE__*/React__default.createElement("div", {
658
+ className: classnames('advancedSearch__wrapper', {
659
+ 'advancedSearch__wrapper-left': position === advancedSearchConfig.positions.left
660
+ }),
661
+ style: inputAndPopoverWidthVariable,
662
+ ref: parentRef
663
+ }, /*#__PURE__*/React__default.createElement(PopoverV2, {
664
+ position: "bottom",
665
+ screenType: "desktop",
666
+ isOpen: popoverOpen,
667
+ scrollbarNeeded: false,
668
+ extendTargetWidth: false,
669
+ className: "advancedSearch__popover",
670
+ onClickOutside: closePopoverHandler,
671
+ containerParent: parentRef === null || parentRef === void 0 ? void 0 : parentRef.current,
672
+ Content: /*#__PURE__*/React__default.createElement(Content, {
673
+ data: data,
674
+ noDataText: noDataText,
675
+ totalCount: totalCount,
676
+ showMoreText: showMoreText,
677
+ totalCountMax: totalCountMax,
678
+ initialData: initialDataState,
679
+ totalCountText: totalCountText,
680
+ onShowMoreClick: onShowMoreClick,
681
+ isSearchLoading: isSearchLoading,
682
+ primaryFilterData: primaryFilterData,
683
+ hasActiveShowMore: hasActiveShowMore,
684
+ secondaryFilterData: secondaryFilterData,
685
+ initialDataDescription: initialDataDescription
686
+ })
687
+ }, /*#__PURE__*/React__default.createElement(ExtendedInput, _extends({
688
+ canClear: true,
689
+ clickableIcon: true,
690
+ ref: searchRef,
691
+ value: searchValue,
692
+ description: false,
693
+ icon: "bc-icon-search",
694
+ flexibility: "content-size",
695
+ onChange: _ref2 => {
696
+ let {
697
+ target
698
+ } = _ref2;
699
+ return setSearchValue(target.value);
700
+ },
701
+ onClick: openPopoverHandler,
702
+ onFocus: openPopoverHandler,
703
+ placeholder: "Advanced Search",
704
+ className: "advancedSearch__extendedInput"
705
+ }, extendedInputConfigs)))), /*#__PURE__*/React__default.createElement("div", {
706
+ "data-comment": "for-popover-accessibility-to-close",
707
+ tabIndex: "0",
708
+ style: {
709
+ height: 0,
710
+ width: 0,
711
+ opacity: 0
712
+ },
713
+ onFocus: closePopoverHandler
714
+ }));
715
+ }
716
+ AdvancedSearch.propTypes = {
717
+ /**
718
+ * Position of the AdvancedSearch component.
719
+ * If set to 'right', it will stretch from right to left, and if set to 'left', it will stretch from left to right.
720
+ * By default, the component stretches from right to left.
721
+ */
722
+ position: propTypesExports.oneOf(Object.values(advancedSearchConfig.positions)),
723
+ /**
724
+ * Width of closed AdvancedSearch input.
725
+ * if you set number it will be px, or you can set string for Example 20vw
726
+ */
727
+ closedInputWidth: propTypesExports.oneOfType([propTypesExports.string, propTypesExports.number]),
728
+ /**
729
+ * Width of opened AdvancedSearch input.
730
+ * It can be only with a number and it will be converted to vw(viewport's width), which is equal to viewport %
731
+ */
732
+ openedInputWidth: propTypesExports.number,
733
+ /**
734
+ * See ExtendedInput components docs
735
+ */
736
+ extendedInputConfigs: propTypesExports.shape({
737
+ ...ExtendedInput.propTypes
738
+ }),
739
+ /**
740
+ * data structure for primary filter
741
+ */
742
+ primaryFilterData: propTypesExports.shape({
743
+ sectionNameText: propTypesExports.string,
744
+ onChange: propTypesExports.func,
745
+ hasActiveShowMore: propTypesExports.bool,
746
+ showMoreText: propTypesExports.string,
747
+ showMoreIsLoading: propTypesExports.bool,
748
+ onShowMoreClick: propTypesExports.func,
749
+ isLoading: propTypesExports.bool,
750
+ data: propTypesExports.arrayOf(propTypesExports.shape({
751
+ name: propTypesExports.string,
752
+ value: propTypesExports.string,
753
+ checked: propTypesExports.bool,
754
+ icon: propTypesExports.string
755
+ }))
756
+ }),
757
+ /**
758
+ * data structure for secondary filter
759
+ */
760
+ secondaryFilterData: propTypesExports.shape({
761
+ sectionNameText: propTypesExports.string,
762
+ onChange: propTypesExports.func,
763
+ hasActiveShowMore: propTypesExports.bool,
764
+ showMoreText: propTypesExports.string,
765
+ showMoreIsLoading: propTypesExports.bool,
766
+ onShowMoreClick: propTypesExports.func,
767
+ isLoading: propTypesExports.bool,
768
+ data: propTypesExports.arrayOf(propTypesExports.shape({
769
+ name: propTypesExports.string,
770
+ value: propTypesExports.string,
771
+ checked: propTypesExports.bool,
772
+ icon: propTypesExports.string
773
+ }))
774
+ }),
775
+ /**
776
+ * Fires an event when input changes and returns value of input (used 300ms debounce)
777
+ */
778
+ onSearch: propTypesExports.func,
779
+ // Pass typed value using some debounce
780
+ /**
781
+ * If search field is empty, initialDataDescription is describing witch data is showing by default for example (Recently modified data).
782
+ */
783
+ initialDataDescription: propTypesExports.string,
784
+ /**
785
+ * If search field is empty, will show initialData for example (Recently modified data).
786
+ */
787
+ initialData: propTypesExports.arrayOf(propTypesExports.shape({
788
+ icon: propTypesExports.string,
789
+ id: propTypesExports.string,
790
+ title: propTypesExports.string,
791
+ type: propTypesExports.string,
792
+ name: propTypesExports.string,
793
+ date: propTypesExports.shape({
794
+ labelText: propTypesExports.string,
795
+ date: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number])
796
+ }),
797
+ actions: propTypesExports.arrayOf(propTypesExports.shape({
798
+ name: propTypesExports.string,
799
+ icon: propTypesExports.string,
800
+ onClick: propTypesExports.func
801
+ }))
802
+ })),
803
+ /**
804
+ * if hasActive hasActiveShowMore is true you will see show more link under search result
805
+ */
806
+ hasActiveShowMore: propTypesExports.bool,
807
+ /**
808
+ * text for link under search result
809
+ */
810
+ showMoreText: propTypesExports.string,
811
+ /**
812
+ * To control showMore loading state
813
+ */
814
+ showMoreIsLoading: propTypesExports.bool,
815
+ /**
816
+ * Fires an event when clicked on link under search result
817
+ */
818
+ onShowMoreClick: propTypesExports.func,
819
+ /**
820
+ * search loading state
821
+ */
822
+ isSearchLoading: propTypesExports.bool,
823
+ /**
824
+ * total count of data to show in badge
825
+ */
826
+ totalCount: propTypesExports.number,
827
+ /**
828
+ * total max count of data to show totalCountMax+ in badge
829
+ */
830
+ totalCountMax: propTypesExports.number,
831
+ /**
832
+ * label text for badge component
833
+ */
834
+ totalCountText: propTypesExports.string,
835
+ /**
836
+ * data structure
837
+ * */
838
+ data: propTypesExports.arrayOf(propTypesExports.shape({
839
+ icon: propTypesExports.string,
840
+ id: propTypesExports.string,
841
+ title: propTypesExports.string,
842
+ type: propTypesExports.string,
843
+ name: propTypesExports.string,
844
+ date: propTypesExports.shape({
845
+ labelText: propTypesExports.string,
846
+ date: propTypesExports.oneOfType([propTypesExports.instanceOf(dayjs), propTypesExports.instanceOf(Date), propTypesExports.string, propTypesExports.number])
847
+ }),
848
+ actions: propTypesExports.arrayOf(propTypesExports.shape({
849
+ name: propTypesExports.string,
850
+ icon: propTypesExports.string,
851
+ onClick: propTypesExports.func
852
+ }))
853
+ })),
854
+ /**
855
+ * text for no data to display
856
+ */
857
+ noDataText: propTypesExports.string
858
+ };
859
+ AdvancedSearch.defaultProps = {
860
+ onSearch: noop,
861
+ openedInputWidth: 65,
862
+ onShowMoreClick: noop,
863
+ closedInputWidth: '200px',
864
+ hasActiveShowMore: false,
865
+ showMoreIsLoading: false,
866
+ showMoreText: 'Show more',
867
+ noDataText: 'No Data to Display',
868
+ position: advancedSearchConfig.positions.right,
869
+ initialDataDescription: 'initial data description'
870
+ };
871
+
872
+ export { AdvancedSearch as default };