@helpwave/hightide 0.1.18 → 0.1.19

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 (253) hide show
  1. package/dist/components/branding/HelpwaveBadge.js +7 -7
  2. package/dist/components/branding/HelpwaveBadge.js.map +1 -1
  3. package/dist/components/branding/HelpwaveBadge.mjs +7 -7
  4. package/dist/components/branding/HelpwaveBadge.mjs.map +1 -1
  5. package/dist/components/date/DatePicker.js +65 -38
  6. package/dist/components/date/DatePicker.js.map +1 -1
  7. package/dist/components/date/DatePicker.mjs +54 -27
  8. package/dist/components/date/DatePicker.mjs.map +1 -1
  9. package/dist/components/date/DayPicker.js +3 -3
  10. package/dist/components/date/DayPicker.js.map +1 -1
  11. package/dist/components/date/DayPicker.mjs +3 -3
  12. package/dist/components/date/DayPicker.mjs.map +1 -1
  13. package/dist/components/date/TimePicker.js +4 -4
  14. package/dist/components/date/TimePicker.js.map +1 -1
  15. package/dist/components/date/TimePicker.mjs +4 -4
  16. package/dist/components/date/TimePicker.mjs.map +1 -1
  17. package/dist/components/date/YearMonthPicker.js +46 -19
  18. package/dist/components/date/YearMonthPicker.js.map +1 -1
  19. package/dist/components/date/YearMonthPicker.mjs +44 -17
  20. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  21. package/dist/components/dialogs/ConfirmDialog.js +32 -28
  22. package/dist/components/dialogs/ConfirmDialog.js.map +1 -1
  23. package/dist/components/dialogs/ConfirmDialog.mjs +18 -14
  24. package/dist/components/dialogs/ConfirmDialog.mjs.map +1 -1
  25. package/dist/components/icons-and-geometry/Avatar.js +2 -2
  26. package/dist/components/icons-and-geometry/Avatar.js.map +1 -1
  27. package/dist/components/icons-and-geometry/Avatar.mjs +2 -2
  28. package/dist/components/icons-and-geometry/Avatar.mjs.map +1 -1
  29. package/dist/components/icons-and-geometry/Ring.js +2 -2
  30. package/dist/components/icons-and-geometry/Ring.js.map +1 -1
  31. package/dist/components/icons-and-geometry/Ring.mjs +2 -2
  32. package/dist/components/icons-and-geometry/Ring.mjs.map +1 -1
  33. package/dist/components/layout-and-navigation/BreadCrumb.js +1 -1
  34. package/dist/components/layout-and-navigation/BreadCrumb.js.map +1 -1
  35. package/dist/components/layout-and-navigation/BreadCrumb.mjs +1 -1
  36. package/dist/components/layout-and-navigation/BreadCrumb.mjs.map +1 -1
  37. package/dist/components/layout-and-navigation/Carousel.js +84 -15
  38. package/dist/components/layout-and-navigation/Carousel.js.map +1 -1
  39. package/dist/components/layout-and-navigation/Carousel.mjs +76 -7
  40. package/dist/components/layout-and-navigation/Carousel.mjs.map +1 -1
  41. package/dist/components/layout-and-navigation/Chip.js +1 -1
  42. package/dist/components/layout-and-navigation/Chip.js.map +1 -1
  43. package/dist/components/layout-and-navigation/Chip.mjs +1 -1
  44. package/dist/components/layout-and-navigation/Chip.mjs.map +1 -1
  45. package/dist/components/layout-and-navigation/Expandable.d.mts +7 -1
  46. package/dist/components/layout-and-navigation/Expandable.d.ts +7 -1
  47. package/dist/components/layout-and-navigation/Expandable.js +36 -9
  48. package/dist/components/layout-and-navigation/Expandable.js.map +1 -1
  49. package/dist/components/layout-and-navigation/Expandable.mjs +36 -10
  50. package/dist/components/layout-and-navigation/Expandable.mjs.map +1 -1
  51. package/dist/components/layout-and-navigation/FAQSection.js +34 -11
  52. package/dist/components/layout-and-navigation/FAQSection.js.map +1 -1
  53. package/dist/components/layout-and-navigation/FAQSection.mjs +36 -13
  54. package/dist/components/layout-and-navigation/FAQSection.mjs.map +1 -1
  55. package/dist/components/layout-and-navigation/Overlay.js +92 -19
  56. package/dist/components/layout-and-navigation/Overlay.js.map +1 -1
  57. package/dist/components/layout-and-navigation/Overlay.mjs +81 -8
  58. package/dist/components/layout-and-navigation/Overlay.mjs.map +1 -1
  59. package/dist/components/layout-and-navigation/Pagination.js +82 -9
  60. package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
  61. package/dist/components/layout-and-navigation/Pagination.mjs +79 -6
  62. package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -1
  63. package/dist/components/layout-and-navigation/SearchableList.js +127 -25
  64. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
  65. package/dist/components/layout-and-navigation/SearchableList.mjs +126 -24
  66. package/dist/components/layout-and-navigation/SearchableList.mjs.map +1 -1
  67. package/dist/components/layout-and-navigation/StepperBar.js +22 -16
  68. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  69. package/dist/components/layout-and-navigation/StepperBar.mjs +19 -13
  70. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -1
  71. package/dist/components/layout-and-navigation/TextImage.js +7 -3
  72. package/dist/components/layout-and-navigation/TextImage.js.map +1 -1
  73. package/dist/components/layout-and-navigation/TextImage.mjs +7 -3
  74. package/dist/components/layout-and-navigation/TextImage.mjs.map +1 -1
  75. package/dist/components/layout-and-navigation/Tile.d.mts +2 -2
  76. package/dist/components/layout-and-navigation/Tile.d.ts +2 -2
  77. package/dist/components/layout-and-navigation/Tile.js +7 -7
  78. package/dist/components/layout-and-navigation/Tile.js.map +1 -1
  79. package/dist/components/layout-and-navigation/Tile.mjs +7 -7
  80. package/dist/components/layout-and-navigation/Tile.mjs.map +1 -1
  81. package/dist/components/loading-states/ErrorComponent.js +1 -1
  82. package/dist/components/loading-states/ErrorComponent.js.map +1 -1
  83. package/dist/components/loading-states/ErrorComponent.mjs +1 -1
  84. package/dist/components/loading-states/ErrorComponent.mjs.map +1 -1
  85. package/dist/components/loading-states/LoadingAndErrorComponent.js +6 -2
  86. package/dist/components/loading-states/LoadingAndErrorComponent.js.map +1 -1
  87. package/dist/components/loading-states/LoadingAndErrorComponent.mjs +6 -2
  88. package/dist/components/loading-states/LoadingAndErrorComponent.mjs.map +1 -1
  89. package/dist/components/loading-states/LoadingAnimation.js +5 -1
  90. package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
  91. package/dist/components/loading-states/LoadingAnimation.mjs +5 -1
  92. package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -1
  93. package/dist/components/loading-states/LoadingButton.js +8 -6
  94. package/dist/components/loading-states/LoadingButton.js.map +1 -1
  95. package/dist/components/loading-states/LoadingButton.mjs +8 -6
  96. package/dist/components/loading-states/LoadingButton.mjs.map +1 -1
  97. package/dist/components/modals/ConfirmModal.js +32 -28
  98. package/dist/components/modals/ConfirmModal.js.map +1 -1
  99. package/dist/components/modals/ConfirmModal.mjs +18 -14
  100. package/dist/components/modals/ConfirmModal.mjs.map +1 -1
  101. package/dist/components/modals/DiscardChangesModal.js +28 -24
  102. package/dist/components/modals/DiscardChangesModal.js.map +1 -1
  103. package/dist/components/modals/DiscardChangesModal.mjs +18 -14
  104. package/dist/components/modals/DiscardChangesModal.mjs.map +1 -1
  105. package/dist/components/modals/InputModal.js +32 -28
  106. package/dist/components/modals/InputModal.js.map +1 -1
  107. package/dist/components/modals/InputModal.mjs +18 -14
  108. package/dist/components/modals/InputModal.mjs.map +1 -1
  109. package/dist/components/modals/LanguageModal.js +728 -434
  110. package/dist/components/modals/LanguageModal.js.map +1 -1
  111. package/dist/components/modals/LanguageModal.mjs +728 -430
  112. package/dist/components/modals/LanguageModal.mjs.map +1 -1
  113. package/dist/components/modals/ThemeModal.js +732 -438
  114. package/dist/components/modals/ThemeModal.js.map +1 -1
  115. package/dist/components/modals/ThemeModal.mjs +731 -433
  116. package/dist/components/modals/ThemeModal.mjs.map +1 -1
  117. package/dist/components/properties/CheckboxProperty.js +110 -35
  118. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  119. package/dist/components/properties/CheckboxProperty.mjs +110 -35
  120. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  121. package/dist/components/properties/DateProperty.js +118 -41
  122. package/dist/components/properties/DateProperty.js.map +1 -1
  123. package/dist/components/properties/DateProperty.mjs +114 -37
  124. package/dist/components/properties/DateProperty.mjs.map +1 -1
  125. package/dist/components/properties/MultiSelectProperty.d.mts +10 -3
  126. package/dist/components/properties/MultiSelectProperty.d.ts +10 -3
  127. package/dist/components/properties/MultiSelectProperty.js +915 -463
  128. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  129. package/dist/components/properties/MultiSelectProperty.mjs +920 -464
  130. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  131. package/dist/components/properties/NumberProperty.js +101 -18
  132. package/dist/components/properties/NumberProperty.js.map +1 -1
  133. package/dist/components/properties/NumberProperty.mjs +101 -18
  134. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  135. package/dist/components/properties/PropertyBase.js +103 -20
  136. package/dist/components/properties/PropertyBase.js.map +1 -1
  137. package/dist/components/properties/PropertyBase.mjs +99 -16
  138. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  139. package/dist/components/properties/SelectProperty.d.mts +9 -2
  140. package/dist/components/properties/SelectProperty.d.ts +9 -2
  141. package/dist/components/properties/SelectProperty.js +682 -243
  142. package/dist/components/properties/SelectProperty.js.map +1 -1
  143. package/dist/components/properties/SelectProperty.mjs +686 -243
  144. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  145. package/dist/components/properties/TextProperty.js +133 -46
  146. package/dist/components/properties/TextProperty.js.map +1 -1
  147. package/dist/components/properties/TextProperty.mjs +133 -46
  148. package/dist/components/properties/TextProperty.mjs.map +1 -1
  149. package/dist/components/table/Table.js +285 -185
  150. package/dist/components/table/Table.js.map +1 -1
  151. package/dist/components/table/Table.mjs +270 -166
  152. package/dist/components/table/Table.mjs.map +1 -1
  153. package/dist/components/table/TableFilterButton.js +179 -78
  154. package/dist/components/table/TableFilterButton.js.map +1 -1
  155. package/dist/components/table/TableFilterButton.mjs +160 -55
  156. package/dist/components/table/TableFilterButton.mjs.map +1 -1
  157. package/dist/components/table/TableSortButton.js +72 -3
  158. package/dist/components/table/TableSortButton.js.map +1 -1
  159. package/dist/components/table/TableSortButton.mjs +72 -3
  160. package/dist/components/table/TableSortButton.mjs.map +1 -1
  161. package/dist/components/user-action/Button.d.mts +15 -2
  162. package/dist/components/user-action/Button.d.ts +15 -2
  163. package/dist/components/user-action/Button.js +12 -12
  164. package/dist/components/user-action/Button.js.map +1 -1
  165. package/dist/components/user-action/Button.mjs +12 -12
  166. package/dist/components/user-action/Button.mjs.map +1 -1
  167. package/dist/components/user-action/Checkbox.js +6 -15
  168. package/dist/components/user-action/Checkbox.js.map +1 -1
  169. package/dist/components/user-action/Checkbox.mjs +6 -15
  170. package/dist/components/user-action/Checkbox.mjs.map +1 -1
  171. package/dist/components/user-action/CopyToClipboardWrapper.js +6 -2
  172. package/dist/components/user-action/CopyToClipboardWrapper.js.map +1 -1
  173. package/dist/components/user-action/CopyToClipboardWrapper.mjs +6 -2
  174. package/dist/components/user-action/CopyToClipboardWrapper.mjs.map +1 -1
  175. package/dist/components/user-action/DateAndTimePicker.js +79 -48
  176. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  177. package/dist/components/user-action/DateAndTimePicker.mjs +65 -34
  178. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  179. package/dist/components/user-action/Menu.d.mts +11 -6
  180. package/dist/components/user-action/Menu.d.ts +11 -6
  181. package/dist/components/user-action/Menu.js +128 -31
  182. package/dist/components/user-action/Menu.js.map +1 -1
  183. package/dist/components/user-action/Menu.mjs +134 -33
  184. package/dist/components/user-action/Menu.mjs.map +1 -1
  185. package/dist/components/user-action/MultiSelect.d.mts +17 -7
  186. package/dist/components/user-action/MultiSelect.d.ts +17 -7
  187. package/dist/components/user-action/MultiSelect.js +796 -375
  188. package/dist/components/user-action/MultiSelect.js.map +1 -1
  189. package/dist/components/user-action/MultiSelect.mjs +781 -356
  190. package/dist/components/user-action/MultiSelect.mjs.map +1 -1
  191. package/dist/components/user-action/ScrollPicker.js +2 -2
  192. package/dist/components/user-action/ScrollPicker.js.map +1 -1
  193. package/dist/components/user-action/ScrollPicker.mjs +2 -2
  194. package/dist/components/user-action/ScrollPicker.mjs.map +1 -1
  195. package/dist/components/user-action/SearchBar.d.mts +14 -0
  196. package/dist/components/user-action/SearchBar.d.ts +14 -0
  197. package/dist/components/user-action/SearchBar.js +673 -0
  198. package/dist/components/user-action/SearchBar.js.map +1 -0
  199. package/dist/components/user-action/SearchBar.mjs +637 -0
  200. package/dist/components/user-action/SearchBar.mjs.map +1 -0
  201. package/dist/components/user-action/Select.d.mts +18 -5
  202. package/dist/components/user-action/Select.d.ts +18 -5
  203. package/dist/components/user-action/Select.js +764 -355
  204. package/dist/components/user-action/Select.js.map +1 -1
  205. package/dist/components/user-action/Select.mjs +761 -349
  206. package/dist/components/user-action/Select.mjs.map +1 -1
  207. package/dist/components/user-action/Textarea.d.mts +1 -1
  208. package/dist/components/user-action/Textarea.d.ts +1 -1
  209. package/dist/components/user-action/Textarea.js +13 -3
  210. package/dist/components/user-action/Textarea.js.map +1 -1
  211. package/dist/components/user-action/Textarea.mjs +13 -3
  212. package/dist/components/user-action/Textarea.mjs.map +1 -1
  213. package/dist/components/user-action/ToggleableInput.js +2 -2
  214. package/dist/components/user-action/ToggleableInput.js.map +1 -1
  215. package/dist/components/user-action/ToggleableInput.mjs +2 -2
  216. package/dist/components/user-action/ToggleableInput.mjs.map +1 -1
  217. package/dist/css/globals.css +251 -113
  218. package/dist/css/uncompiled/globals.css +19 -13
  219. package/dist/css/uncompiled/theme/colors-component.css +12 -3
  220. package/dist/css/uncompiled/theme/colors-semantic.css +10 -7
  221. package/dist/css/uncompiled/utitlity/animation.css +70 -1
  222. package/dist/css/uncompiled/utitlity/general.css +16 -0
  223. package/dist/hooks/usePopoverPosition.d.mts +15 -0
  224. package/dist/hooks/usePopoverPosition.d.ts +15 -0
  225. package/dist/hooks/usePopoverPosition.js +81 -0
  226. package/dist/hooks/usePopoverPosition.js.map +1 -0
  227. package/dist/hooks/usePopoverPosition.mjs +57 -0
  228. package/dist/hooks/usePopoverPosition.mjs.map +1 -0
  229. package/dist/hooks/useSearch.d.mts +7 -2
  230. package/dist/hooks/useSearch.d.ts +7 -2
  231. package/dist/hooks/useSearch.js +44 -15
  232. package/dist/hooks/useSearch.js.map +1 -1
  233. package/dist/hooks/useSearch.mjs +45 -16
  234. package/dist/hooks/useSearch.mjs.map +1 -1
  235. package/dist/index.d.mts +6 -4
  236. package/dist/index.d.ts +6 -4
  237. package/dist/index.js +1102 -819
  238. package/dist/index.js.map +1 -1
  239. package/dist/index.mjs +1001 -718
  240. package/dist/index.mjs.map +1 -1
  241. package/dist/localization/defaults/form.d.mts +2 -0
  242. package/dist/localization/defaults/form.d.ts +2 -0
  243. package/dist/localization/defaults/form.js +4 -0
  244. package/dist/localization/defaults/form.js.map +1 -1
  245. package/dist/localization/defaults/form.mjs +4 -0
  246. package/dist/localization/defaults/form.mjs.map +1 -1
  247. package/dist/util/simpleSearch.d.mts +1 -1
  248. package/dist/util/simpleSearch.d.ts +1 -1
  249. package/dist/util/simpleSearch.js +4 -1
  250. package/dist/util/simpleSearch.js.map +1 -1
  251. package/dist/util/simpleSearch.mjs +4 -1
  252. package/dist/util/simpleSearch.mjs.map +1 -1
  253. package/package.json +1 -1
@@ -1,14 +1,14 @@
1
1
  // src/hooks/useSearch.ts
2
- import { useEffect, useMemo, useState } from "react";
2
+ import { useCallback, useEffect, useMemo, useState } from "react";
3
3
 
4
4
  // src/util/simpleSearch.ts
5
- var MultiSearchWithMapping = (search, objects, mapping) => {
5
+ var MultiSubjectSearchWithMapping = (search, objects, mapping) => {
6
6
  return objects.filter((object) => {
7
7
  const mappedSearchKeywords = mapping(object)?.map((value) => value.toLowerCase().trim());
8
8
  if (!mappedSearchKeywords) {
9
9
  return true;
10
10
  }
11
- return !!mappedSearchKeywords.find((value) => value.includes(search.toLowerCase().trim()));
11
+ return search.every((searchValue) => !!mappedSearchKeywords.find((value) => !!value && value.includes(searchValue.toLowerCase().trim())));
12
12
  });
13
13
  };
14
14
 
@@ -16,22 +16,51 @@ var MultiSearchWithMapping = (search, objects, mapping) => {
16
16
  var useSearch = ({
17
17
  list,
18
18
  initialSearch,
19
- searchMapping
19
+ searchMapping,
20
+ additionalSearchTags,
21
+ isSearchInstant = true,
22
+ sortingFunction,
23
+ filter,
24
+ disabled = false
20
25
  }) => {
21
- const [items, setItems] = useState(list);
22
- const [search, setSearch] = useState(initialSearch);
26
+ const [search, setSearch] = useState(initialSearch ?? "");
27
+ const [result, setResult] = useState(list);
28
+ const searchTags = useMemo(() => additionalSearchTags ?? [], [additionalSearchTags]);
29
+ const updateSearch = useCallback((newSearch) => {
30
+ const usedSearch = newSearch ?? search;
31
+ if (newSearch) {
32
+ setSearch(search);
33
+ }
34
+ setResult(MultiSubjectSearchWithMapping([usedSearch, ...searchTags], list, searchMapping));
35
+ }, [searchTags, list, search, searchMapping]);
23
36
  useEffect(() => {
24
- setItems(list);
25
- }, [list]);
26
- const result = useMemo(
27
- () => MultiSearchWithMapping(search, items, searchMapping),
28
- [search, items, searchMapping]
29
- );
37
+ if (isSearchInstant) {
38
+ setResult(MultiSubjectSearchWithMapping([search, ...searchTags], list, searchMapping));
39
+ }
40
+ }, [searchTags, isSearchInstant, list, search, searchMapping, additionalSearchTags]);
41
+ const filteredResult = useMemo(() => {
42
+ if (!filter) {
43
+ return result;
44
+ }
45
+ return result.filter(filter);
46
+ }, [result, filter]);
47
+ const sortedAndFilteredResult = useMemo(() => {
48
+ if (!sortingFunction) {
49
+ return filteredResult;
50
+ }
51
+ return filteredResult.sort(sortingFunction);
52
+ }, [filteredResult, sortingFunction]);
53
+ const usedResult = useMemo(() => {
54
+ if (!disabled) {
55
+ return sortedAndFilteredResult;
56
+ }
57
+ return list;
58
+ }, [disabled, list, sortedAndFilteredResult]);
30
59
  return {
31
- result,
32
- hasResult: result.length > 0,
33
- allItems: items,
34
- setItems,
60
+ result: usedResult,
61
+ hasResult: usedResult.length > 0,
62
+ allItems: list,
63
+ updateSearch,
35
64
  search,
36
65
  setSearch
37
66
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/hooks/useSearch.ts","../../src/util/simpleSearch.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react'\nimport { MultiSearchWithMapping } from '../util/simpleSearch'\n\nexport type UseSearchProps<T> = {\n list: T[],\n searchMapping: (item: T) => string[],\n initialSearch?: string,\n}\n\nexport const useSearch = <T>({\n list,\n initialSearch,\n searchMapping,\n }: UseSearchProps<T>) => {\n const [items, setItems] = useState<T[]>(list)\n const [search, setSearch] = useState<string>(initialSearch)\n\n useEffect(() => {\n setItems(list)\n }, [list])\n\n const result: T[] = useMemo(\n () => MultiSearchWithMapping(search, items, searchMapping),\n [search, items, searchMapping]\n )\n\n return {\n result,\n hasResult: result.length > 0,\n allItems: items,\n setItems,\n search,\n setSearch,\n }\n}","/**\n * Finds all values matching the search values by first mapping the values to a string array and then checking each entry for matches.\n * Returns the list of all matches.\n *\n * @param search The list of search strings e.g. `[name, type]`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to the string properties they fulfil\n *\n * @return The list of objects that match all search strings\n */\nexport const MultiSubjectSearchWithMapping = <T>(search: string[], objects: T[], mapping: (value: T) => (string | undefined)[]) => {\n return objects.filter(object => {\n const mappedSearchKeywords = mapping(object).map(value => value ? value.toLowerCase().trim() : undefined)\n return search.every(searchValue => !!mappedSearchKeywords.find(value => !!value && value.includes(searchValue.toLowerCase().trim())))\n })\n}\n\n/**\n * Finds all values matching the search value by first mapping the values to a string array and then checking each entry for matches.\n * Returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to the string properties they fulfil, if undefined it is always fulfilled\n *\n * @return The list of objects that match the search string\n */\nexport const MultiSearchWithMapping = <T>(search: string, objects: T[], mapping: (value: T) => (string[] | undefined)) => {\n return objects.filter(object => {\n const mappedSearchKeywords = mapping(object)?.map(value => value.toLowerCase().trim())\n if(!mappedSearchKeywords) {\n return true\n }\n return !!mappedSearchKeywords.find(value => value.includes(search.toLowerCase().trim()))\n })\n}\n\n/**\n * Finds all values matching the search value by first mapping the values to a string and returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to a string that is compared to the search\n *\n * @return The list of objects that match the search string\n */\nexport const SimpleSearchWithMapping = <T>(search: string, objects: T[], mapping: (value: T) => string) => {\n return MultiSearchWithMapping(search, objects, value => [mapping(value)])\n}\n\n/**\n * Finds all values matching the search value and returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @return The list of objects that match the search string\n */\nexport const SimpleSearch = (search: string, objects: string[]) => {\n return SimpleSearchWithMapping(search, objects, value => value)\n}\n"],"mappings":";AAAA,SAAS,WAAW,SAAS,gBAAgB;;;AC+BtC,IAAM,yBAAyB,CAAI,QAAgB,SAAc,YAAkD;AACxH,SAAO,QAAQ,OAAO,YAAU;AAC9B,UAAM,uBAAuB,QAAQ,MAAM,GAAG,IAAI,WAAS,MAAM,YAAY,EAAE,KAAK,CAAC;AACrF,QAAG,CAAC,sBAAsB;AACxB,aAAO;AAAA,IACT;AACA,WAAO,CAAC,CAAC,qBAAqB,KAAK,WAAS,MAAM,SAAS,OAAO,YAAY,EAAE,KAAK,CAAC,CAAC;AAAA,EACzF,CAAC;AACH;;;AD9BO,IAAM,YAAY,CAAI;AAAA,EACE;AAAA,EACA;AAAA,EACA;AACF,MAAyB;AACpD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAc,IAAI;AAC5C,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB,aAAa;AAE1D,YAAU,MAAM;AACd,aAAS,IAAI;AAAA,EACf,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,SAAc;AAAA,IAClB,MAAM,uBAAuB,QAAQ,OAAO,aAAa;AAAA,IACzD,CAAC,QAAQ,OAAO,aAAa;AAAA,EAC/B;AAEA,SAAO;AAAA,IACL;AAAA,IACA,WAAW,OAAO,SAAS;AAAA,IAC3B,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/hooks/useSearch.ts","../../src/util/simpleSearch.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react'\nimport { MultiSubjectSearchWithMapping } from '../util/simpleSearch'\n\nexport type UseSearchProps<T> = {\n list: T[],\n searchMapping: (item: T) => string[],\n initialSearch?: string,\n additionalSearchTags?: string[],\n isSearchInstant?: boolean,\n sortingFunction?: (a: T, b: T) => number,\n filter?: (item: T) => boolean,\n disabled?: boolean,\n}\n\nexport const useSearch = <T>({\n list,\n initialSearch,\n searchMapping,\n additionalSearchTags,\n isSearchInstant = true,\n sortingFunction,\n filter,\n disabled = false,\n }: UseSearchProps<T>) => {\n const [search, setSearch] = useState<string>(initialSearch ?? '')\n const [result, setResult] = useState<T[]>(list)\n const searchTags = useMemo(() => additionalSearchTags ?? [], [additionalSearchTags])\n\n const updateSearch = useCallback((newSearch?: string) => {\n const usedSearch = newSearch ?? search\n if (newSearch) {\n setSearch(search)\n }\n setResult(MultiSubjectSearchWithMapping([usedSearch, ...searchTags], list, searchMapping))\n }, [searchTags, list, search, searchMapping])\n\n useEffect(() => {\n if (isSearchInstant) {\n setResult(MultiSubjectSearchWithMapping([search, ...searchTags], list, searchMapping))\n }\n }, [searchTags, isSearchInstant, list, search, searchMapping, additionalSearchTags])\n\n const filteredResult: T[] = useMemo(() => {\n if (!filter) {\n return result\n }\n return result.filter(filter)\n }, [result, filter])\n\n const sortedAndFilteredResult: T[] = useMemo(() => {\n if (!sortingFunction) {\n return filteredResult\n }\n return filteredResult.sort(sortingFunction)\n }, [filteredResult, sortingFunction])\n\n const usedResult = useMemo(() => {\n if (!disabled) {\n return sortedAndFilteredResult\n }\n return list\n }, [disabled, list, sortedAndFilteredResult])\n\n return {\n result: usedResult,\n hasResult: usedResult.length > 0,\n allItems: list,\n updateSearch,\n search,\n setSearch,\n }\n}","/**\n * Finds all values matching the search values by first mapping the values to a string array and then checking each entry for matches.\n * Returns the list of all matches.\n *\n * @param search The list of search strings e.g. `[name, type]`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to the string properties they fulfil\n *\n * @return The list of objects that match all search strings\n */\nexport const MultiSubjectSearchWithMapping = <T>(search: string[], objects: T[], mapping: (value: T) => (string[] | undefined)) => {\n return objects.filter(object => {\n const mappedSearchKeywords = mapping(object)?.map(value => value.toLowerCase().trim())\n if(!mappedSearchKeywords) {\n return true\n }\n return search.every(searchValue => !!mappedSearchKeywords.find(value => !!value && value.includes(searchValue.toLowerCase().trim())))\n })\n}\n\n/**\n * Finds all values matching the search value by first mapping the values to a string array and then checking each entry for matches.\n * Returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to the string properties they fulfil, if undefined it is always fulfilled\n *\n * @return The list of objects that match the search string\n */\nexport const MultiSearchWithMapping = <T>(search: string, objects: T[], mapping: (value: T) => (string[] | undefined)) => {\n return objects.filter(object => {\n const mappedSearchKeywords = mapping(object)?.map(value => value.toLowerCase().trim())\n if(!mappedSearchKeywords) {\n return true\n }\n return !!mappedSearchKeywords.find(value => value.includes(search.toLowerCase().trim()))\n })\n}\n\n/**\n * Finds all values matching the search value by first mapping the values to a string and returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @param mapping The mapping of objects to a string that is compared to the search\n *\n * @return The list of objects that match the search string\n */\nexport const SimpleSearchWithMapping = <T>(search: string, objects: T[], mapping: (value: T) => string) => {\n return MultiSearchWithMapping(search, objects, value => [mapping(value)])\n}\n\n/**\n * Finds all values matching the search value and returns the list of all matches.\n *\n * @param search The search string e.g `name`\n *\n * @param objects The list of objects to be searched in\n *\n * @return The list of objects that match the search string\n */\nexport const SimpleSearch = (search: string, objects: string[]) => {\n return SimpleSearchWithMapping(search, objects, value => value)\n}\n"],"mappings":";AAAA,SAAS,aAAa,WAAW,SAAS,gBAAgB;;;ACYnD,IAAM,gCAAgC,CAAI,QAAkB,SAAc,YAAkD;AACjI,SAAO,QAAQ,OAAO,YAAU;AAC9B,UAAM,uBAAuB,QAAQ,MAAM,GAAG,IAAI,WAAS,MAAM,YAAY,EAAE,KAAK,CAAC;AACrF,QAAG,CAAC,sBAAsB;AACxB,aAAO;AAAA,IACT;AACA,WAAO,OAAO,MAAM,iBAAe,CAAC,CAAC,qBAAqB,KAAK,WAAS,CAAC,CAAC,SAAS,MAAM,SAAS,YAAY,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;AAAA,EACtI,CAAC;AACH;;;ADNO,IAAM,YAAY,CAAI;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA,WAAW;AACb,MAAyB;AACpD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB,iBAAiB,EAAE;AAChE,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAc,IAAI;AAC9C,QAAM,aAAa,QAAQ,MAAM,wBAAwB,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAEnF,QAAM,eAAe,YAAY,CAAC,cAAuB;AACvD,UAAM,aAAa,aAAa;AAChC,QAAI,WAAW;AACb,gBAAU,MAAM;AAAA,IAClB;AACA,cAAU,8BAA8B,CAAC,YAAY,GAAG,UAAU,GAAG,MAAM,aAAa,CAAC;AAAA,EAC3F,GAAG,CAAC,YAAY,MAAM,QAAQ,aAAa,CAAC;AAE5C,YAAU,MAAM;AACd,QAAI,iBAAiB;AACnB,gBAAU,8BAA8B,CAAC,QAAQ,GAAG,UAAU,GAAG,MAAM,aAAa,CAAC;AAAA,IACvF;AAAA,EACF,GAAG,CAAC,YAAY,iBAAiB,MAAM,QAAQ,eAAe,oBAAoB,CAAC;AAEnF,QAAM,iBAAsB,QAAQ,MAAM;AACxC,QAAI,CAAC,QAAQ;AACX,aAAO;AAAA,IACT;AACA,WAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,GAAG,CAAC,QAAQ,MAAM,CAAC;AAEnB,QAAM,0BAA+B,QAAQ,MAAM;AACjD,QAAI,CAAC,iBAAiB;AACpB,aAAO;AAAA,IACT;AACA,WAAO,eAAe,KAAK,eAAe;AAAA,EAC5C,GAAG,CAAC,gBAAgB,eAAe,CAAC;AAEpC,QAAM,aAAa,QAAQ,MAAM;AAC/B,QAAI,CAAC,UAAU;AACb,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,GAAG,CAAC,UAAU,MAAM,uBAAuB,CAAC;AAE5C,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,WAAW,WAAW,SAAS;AAAA,IAC/B,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
package/dist/index.d.mts CHANGED
@@ -16,7 +16,7 @@ export { BreadCrumb, Crumb } from './components/layout-and-navigation/BreadCrumb
16
16
  export { Carousel, CarouselProps } from './components/layout-and-navigation/Carousel.mjs';
17
17
  export { Chip, ChipColor, ChipList, ChipListProps, ChipProps } from './components/layout-and-navigation/Chip.mjs';
18
18
  export { DividerInserter, DividerInserterProps } from './components/layout-and-navigation/DividerInserter.mjs';
19
- export { Expandable, ExpandableProps, ExpandableUncontrolled } from './components/layout-and-navigation/Expandable.mjs';
19
+ export { Expandable, ExpandableProps, ExpandableUncontrolled, ExpansionIcon, ExpansionIconProps } from './components/layout-and-navigation/Expandable.mjs';
20
20
  export { FAQItem, FAQSection, FAQSectionProps } from './components/layout-and-navigation/FAQSection.mjs';
21
21
  export { ASTNodeInterpreter, ASTNodeInterpreterProps, MarkdownInterpreter, MarkdownInterpreterProps } from './components/layout-and-navigation/MarkdownInterpreter.mjs';
22
22
  export { Dialog, DialogProps, Modal, ModalProps, Overlay, OverlayHeader, OverlayHeaderProps, OverlayProps } from './components/layout-and-navigation/Overlay.mjs';
@@ -55,10 +55,11 @@ export { CopyToClipboardWrapper, CopyToClipboardWrapperProps } from './component
55
55
  export { DateTimePicker, DateTimePickerMode, DateTimePickerProps } from './components/user-action/DateAndTimePicker.mjs';
56
56
  export { EditCompleteOptions, EditCompleteOptionsResolved, FormInput, FormInputProps, Input, InputProps, InputUncontrolled } from './components/user-action/Input.mjs';
57
57
  export { Label, LabelProps, LabelType } from './components/user-action/Label.mjs';
58
- export { Menu, MenuItem, MenuItemProps, MenuProps } from './components/user-action/Menu.mjs';
59
- export { MultiSelect, MultiSelectOption, MultiSelectProps, MultiSelectUncontrolled } from './components/user-action/MultiSelect.mjs';
58
+ export { Menu, MenuBag, MenuItem, MenuItemProps, MenuProps } from './components/user-action/Menu.mjs';
59
+ export { MultiSelect, MultiSelectBag, MultiSelectOption, MultiSelectProps, MultiSelectUncontrolled } from './components/user-action/MultiSelect.mjs';
60
60
  export { ScrollPicker, ScrollPickerProps } from './components/user-action/ScrollPicker.mjs';
61
- export { Select, SelectOption, SelectProps, SelectUncontrolled } from './components/user-action/Select.mjs';
61
+ export { SearchBar, SearchBarProps } from './components/user-action/SearchBar.mjs';
62
+ export { Select, SelectBag, SelectOption, SelectProps, SelectTile, SelectTileProps, SelectUncontrolled } from './components/user-action/Select.mjs';
62
63
  export { Textarea, TextareaProps, TextareaUncontrolled } from './components/user-action/Textarea.mjs';
63
64
  export { ToggleableInput, ToggleableInputUncontrolled } from './components/user-action/ToggleableInput.mjs';
64
65
  export { Tooltip, TooltipProps } from './components/user-action/Tooltip.mjs';
@@ -68,6 +69,7 @@ export { useFocusOnceVisible } from './hooks/useFocusOnceVisible.mjs';
68
69
  export { useHoverState } from './hooks/useHoverState.mjs';
69
70
  export { useLocalStorage } from './hooks/useLocalStorage.mjs';
70
71
  export { useOutsideClick } from './hooks/useOutsideClick.mjs';
72
+ export { PopoverHorizontalAlignment, PopoverVerticalAlignment, usePopoverPosition } from './hooks/usePopoverPosition.mjs';
71
73
  export { useRerender } from './hooks/useRerender.mjs';
72
74
  export { useResizeCallbackWrapper } from './hooks/useResizeCallbackWrapper.mjs';
73
75
  export { UseSearchProps, useSearch } from './hooks/useSearch.mjs';
package/dist/index.d.ts CHANGED
@@ -16,7 +16,7 @@ export { BreadCrumb, Crumb } from './components/layout-and-navigation/BreadCrumb
16
16
  export { Carousel, CarouselProps } from './components/layout-and-navigation/Carousel.js';
17
17
  export { Chip, ChipColor, ChipList, ChipListProps, ChipProps } from './components/layout-and-navigation/Chip.js';
18
18
  export { DividerInserter, DividerInserterProps } from './components/layout-and-navigation/DividerInserter.js';
19
- export { Expandable, ExpandableProps, ExpandableUncontrolled } from './components/layout-and-navigation/Expandable.js';
19
+ export { Expandable, ExpandableProps, ExpandableUncontrolled, ExpansionIcon, ExpansionIconProps } from './components/layout-and-navigation/Expandable.js';
20
20
  export { FAQItem, FAQSection, FAQSectionProps } from './components/layout-and-navigation/FAQSection.js';
21
21
  export { ASTNodeInterpreter, ASTNodeInterpreterProps, MarkdownInterpreter, MarkdownInterpreterProps } from './components/layout-and-navigation/MarkdownInterpreter.js';
22
22
  export { Dialog, DialogProps, Modal, ModalProps, Overlay, OverlayHeader, OverlayHeaderProps, OverlayProps } from './components/layout-and-navigation/Overlay.js';
@@ -55,10 +55,11 @@ export { CopyToClipboardWrapper, CopyToClipboardWrapperProps } from './component
55
55
  export { DateTimePicker, DateTimePickerMode, DateTimePickerProps } from './components/user-action/DateAndTimePicker.js';
56
56
  export { EditCompleteOptions, EditCompleteOptionsResolved, FormInput, FormInputProps, Input, InputProps, InputUncontrolled } from './components/user-action/Input.js';
57
57
  export { Label, LabelProps, LabelType } from './components/user-action/Label.js';
58
- export { Menu, MenuItem, MenuItemProps, MenuProps } from './components/user-action/Menu.js';
59
- export { MultiSelect, MultiSelectOption, MultiSelectProps, MultiSelectUncontrolled } from './components/user-action/MultiSelect.js';
58
+ export { Menu, MenuBag, MenuItem, MenuItemProps, MenuProps } from './components/user-action/Menu.js';
59
+ export { MultiSelect, MultiSelectBag, MultiSelectOption, MultiSelectProps, MultiSelectUncontrolled } from './components/user-action/MultiSelect.js';
60
60
  export { ScrollPicker, ScrollPickerProps } from './components/user-action/ScrollPicker.js';
61
- export { Select, SelectOption, SelectProps, SelectUncontrolled } from './components/user-action/Select.js';
61
+ export { SearchBar, SearchBarProps } from './components/user-action/SearchBar.js';
62
+ export { Select, SelectBag, SelectOption, SelectProps, SelectTile, SelectTileProps, SelectUncontrolled } from './components/user-action/Select.js';
62
63
  export { Textarea, TextareaProps, TextareaUncontrolled } from './components/user-action/Textarea.js';
63
64
  export { ToggleableInput, ToggleableInputUncontrolled } from './components/user-action/ToggleableInput.js';
64
65
  export { Tooltip, TooltipProps } from './components/user-action/Tooltip.js';
@@ -68,6 +69,7 @@ export { useFocusOnceVisible } from './hooks/useFocusOnceVisible.js';
68
69
  export { useHoverState } from './hooks/useHoverState.js';
69
70
  export { useLocalStorage } from './hooks/useLocalStorage.js';
70
71
  export { useOutsideClick } from './hooks/useOutsideClick.js';
72
+ export { PopoverHorizontalAlignment, PopoverVerticalAlignment, usePopoverPosition } from './hooks/usePopoverPosition.js';
71
73
  export { useRerender } from './hooks/useRerender.js';
72
74
  export { useResizeCallbackWrapper } from './hooks/useResizeCallbackWrapper.js';
73
75
  export { UseSearchProps, useSearch } from './hooks/useSearch.js';