@helsenorge/designsystem-react 14.6.0 → 14.7.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 (281) hide show
  1. package/lib/AnchorLink.js +2 -2
  2. package/lib/AnchorLink.js.map +1 -1
  3. package/lib/Avatar.js +2 -2
  4. package/lib/Avatar.js.map +1 -1
  5. package/lib/Badge.js +2 -2
  6. package/lib/Badge.js.map +1 -1
  7. package/lib/Button.js +6 -6
  8. package/lib/Button.js.map +1 -1
  9. package/lib/CHANGELOG.md +17 -0
  10. package/lib/Checkbox.js +6 -6
  11. package/lib/Checkbox.js.map +1 -1
  12. package/lib/Chip.js +60 -0
  13. package/lib/Chip.js.map +1 -0
  14. package/lib/Close.js +3 -3
  15. package/lib/Close.js.map +1 -1
  16. package/lib/DictionaryTrigger.js +2 -2
  17. package/lib/DictionaryTrigger.js.map +1 -1
  18. package/lib/Drawer.js +42 -19
  19. package/lib/Drawer.js.map +1 -1
  20. package/lib/DrawerNavigation.js +81 -0
  21. package/lib/DrawerNavigation.js.map +1 -0
  22. package/lib/DrawerNavigation2.js +5 -0
  23. package/lib/DrawerNavigation2.js.map +1 -0
  24. package/lib/Duolist.js +5 -5
  25. package/lib/Duolist.js.map +1 -1
  26. package/lib/ElementHeader.js +9 -9
  27. package/lib/ElementHeader.js.map +1 -1
  28. package/lib/ElementHeaderText.js +4 -4
  29. package/lib/ElementHeaderText.js.map +1 -1
  30. package/lib/ErrorWrapper.js +2 -2
  31. package/lib/ErrorWrapper.js.map +1 -1
  32. package/lib/Expander.js +8 -8
  33. package/lib/Expander.js.map +1 -1
  34. package/lib/Filter.js +44 -0
  35. package/lib/Filter.js.map +1 -0
  36. package/lib/FilterButton.js +40 -0
  37. package/lib/FilterButton.js.map +1 -0
  38. package/lib/FilterButtonAndChipsWrapper.js +14 -0
  39. package/lib/FilterButtonAndChipsWrapper.js.map +1 -0
  40. package/lib/FilterDrawer.js +91 -0
  41. package/lib/FilterDrawer.js.map +1 -0
  42. package/lib/FilterLinkList.js +61 -0
  43. package/lib/FilterLinkList.js.map +1 -0
  44. package/lib/FilterLinkList2.js +5 -0
  45. package/lib/FilterLinkList2.js.map +1 -0
  46. package/lib/FilterOverviewLinkList.js +22 -0
  47. package/lib/FilterOverviewLinkList.js.map +1 -0
  48. package/lib/FilterOverviewSearch.js +16 -0
  49. package/lib/FilterOverviewSearch.js.map +1 -0
  50. package/lib/FilterResultCountAndSortWrapper.js +19 -0
  51. package/lib/FilterResultCountAndSortWrapper.js.map +1 -0
  52. package/lib/FilterSearch.js +87 -0
  53. package/lib/FilterSearch.js.map +1 -0
  54. package/lib/FilterSearch2.js +5 -0
  55. package/lib/FilterSearch2.js.map +1 -0
  56. package/lib/FilterSort.js +30 -0
  57. package/lib/FilterSort.js.map +1 -0
  58. package/lib/FormFieldTag.js +2 -2
  59. package/lib/FormFieldTag.js.map +1 -1
  60. package/lib/FormGroup.js +6 -6
  61. package/lib/FormGroup.js.map +1 -1
  62. package/lib/FormLayout.js +3 -3
  63. package/lib/FormLayout.js.map +1 -1
  64. package/lib/HelpDetails.js +3 -3
  65. package/lib/HelpDetails.js.map +1 -1
  66. package/lib/HelpTriggerIcon.js +2 -2
  67. package/lib/HelpTriggerIcon.js.map +1 -1
  68. package/lib/HelpTriggerStandalone.js +2 -2
  69. package/lib/HelpTriggerStandalone.js.map +1 -1
  70. package/lib/HighlightPanel.js +3 -3
  71. package/lib/HighlightPanel.js.map +1 -1
  72. package/lib/HorizontalScroll.js +4 -4
  73. package/lib/HorizontalScroll.js.map +1 -1
  74. package/lib/Icon.js +2 -2
  75. package/lib/Icon.js.map +1 -1
  76. package/lib/InfoTeaser.js +3 -3
  77. package/lib/InfoTeaser.js.map +1 -1
  78. package/lib/Input.js +4 -4
  79. package/lib/Input.js.map +1 -1
  80. package/lib/LinkList.js +5 -5
  81. package/lib/LinkList.js.map +1 -1
  82. package/lib/List.js +2 -2
  83. package/lib/List.js.map +1 -1
  84. package/lib/ListEditMode.js +4 -4
  85. package/lib/ListEditMode.js.map +1 -1
  86. package/lib/MaxCharacters.js +2 -2
  87. package/lib/MaxCharacters.js.map +1 -1
  88. package/lib/PanelTitle.js +2 -2
  89. package/lib/PanelTitle.js.map +1 -1
  90. package/lib/PopOver.js +2 -2
  91. package/lib/PopOver.js.map +1 -1
  92. package/lib/Search.js +26 -0
  93. package/lib/Search.js.map +1 -0
  94. package/lib/Select.js +7 -6
  95. package/lib/Select.js.map +1 -1
  96. package/lib/SingleSelectItem.js +3 -3
  97. package/lib/SingleSelectItem.js.map +1 -1
  98. package/lib/Slider.js +4 -4
  99. package/lib/Slider.js.map +1 -1
  100. package/lib/Spacer.js +2 -2
  101. package/lib/Spacer.js.map +1 -1
  102. package/lib/StatusDot.js +4 -4
  103. package/lib/StatusDot.js.map +1 -1
  104. package/lib/StatusDotList.js +2 -2
  105. package/lib/StatusDotList.js.map +1 -1
  106. package/lib/StepButtons.js +5 -5
  107. package/lib/StepButtons.js.map +1 -1
  108. package/lib/TabList.js +8 -8
  109. package/lib/TabList.js.map +1 -1
  110. package/lib/TabPanel.js +2 -2
  111. package/lib/TabPanel.js.map +1 -1
  112. package/lib/TableBody.js +2 -2
  113. package/lib/TableBody.js.map +1 -1
  114. package/lib/TableCell.js +2 -2
  115. package/lib/TableCell.js.map +1 -1
  116. package/lib/TableExpandedRow.js +4 -4
  117. package/lib/TableExpandedRow.js.map +1 -1
  118. package/lib/TableExpanderCell.js +2 -2
  119. package/lib/TableExpanderCell.js.map +1 -1
  120. package/lib/TableHead.js +2 -2
  121. package/lib/TableHead.js.map +1 -1
  122. package/lib/TableHeadCell.js +3 -3
  123. package/lib/TableHeadCell.js.map +1 -1
  124. package/lib/TableRow.js +3 -3
  125. package/lib/TableRow.js.map +1 -1
  126. package/lib/Textarea.js +4 -4
  127. package/lib/Textarea.js.map +1 -1
  128. package/lib/Title.js +4 -3
  129. package/lib/Title.js.map +1 -1
  130. package/lib/Toast.js +3 -3
  131. package/lib/Toast.js.map +1 -1
  132. package/lib/components/ArticleTeaser/index.js +4 -4
  133. package/lib/components/ArticleTeaser/index.js.map +1 -1
  134. package/lib/components/Chip/index.js +1 -59
  135. package/lib/components/Drawer/Drawer.d.ts +6 -0
  136. package/lib/components/Drawer/styles.module.scss +19 -0
  137. package/lib/components/Drawer/styles.module.scss.d.ts +1 -0
  138. package/lib/components/Dropdown/index.js +5 -5
  139. package/lib/components/Dropdown/index.js.map +1 -1
  140. package/lib/components/DropdownOld/index.js +3 -3
  141. package/lib/components/DropdownOld/index.js.map +1 -1
  142. package/lib/components/EmptyState/index.js +2 -2
  143. package/lib/components/EmptyState/index.js.map +1 -1
  144. package/lib/components/ExpanderHierarchy/index.js +7 -7
  145. package/lib/components/ExpanderHierarchy/index.js.map +1 -1
  146. package/lib/components/ExpanderList/index.js +6 -6
  147. package/lib/components/ExpanderList/index.js.map +1 -1
  148. package/lib/components/FavoriteButton/index.js +2 -2
  149. package/lib/components/FavoriteButton/index.js.map +1 -1
  150. package/lib/components/Filter/DrawerNavigation/DrawerNavigation.d.ts +35 -0
  151. package/lib/components/Filter/DrawerNavigation/FinnFastlegeFlyt.example.d.ts +2 -0
  152. package/lib/components/Filter/DrawerNavigation/FinnFastlegeFlyt.module.scss +15 -0
  153. package/lib/components/Filter/DrawerNavigation/FinnFastlegeFlyt.module.scss.d.ts +11 -0
  154. package/lib/components/Filter/DrawerNavigation/index.d.ts +4 -0
  155. package/lib/components/Filter/DrawerNavigation/index.js +3 -0
  156. package/lib/components/Filter/DrawerNavigation/useDrawerNavigation.d.ts +7 -0
  157. package/lib/components/Filter/FilterButton/FilterButton.d.ts +7 -0
  158. package/lib/components/Filter/FilterButton/index.d.ts +3 -0
  159. package/lib/components/Filter/FilterButton/index.js +2 -0
  160. package/lib/components/Filter/FilterButton/styles.module.scss +52 -0
  161. package/lib/components/Filter/FilterButton/styles.module.scss.d.ts +12 -0
  162. package/lib/components/Filter/FilterButtonAndChipsWrapper/FilterButtonAndChipsWrapper.d.ts +11 -0
  163. package/lib/components/Filter/FilterButtonAndChipsWrapper/index.d.ts +3 -0
  164. package/lib/components/Filter/FilterButtonAndChipsWrapper/index.js +2 -0
  165. package/lib/components/Filter/FilterButtonAndChipsWrapper/styles.module.scss +8 -0
  166. package/lib/components/Filter/FilterButtonAndChipsWrapper/styles.module.scss.d.ts +9 -0
  167. package/lib/components/Filter/FilterDrawer/FilterDrawer.d.ts +42 -0
  168. package/lib/components/Filter/FilterDrawer/index.d.ts +3 -0
  169. package/lib/components/Filter/FilterDrawer/index.js +2 -0
  170. package/lib/components/Filter/FilterDrawer/styles.module.scss +29 -0
  171. package/lib/components/Filter/FilterDrawer/styles.module.scss.d.ts +10 -0
  172. package/lib/components/Filter/FilterLinkList/FilterLinkList.d.ts +35 -0
  173. package/lib/components/Filter/FilterLinkList/FilterLinkList.module.scss +89 -0
  174. package/lib/components/Filter/FilterLinkList/FilterLinkList.module.scss.d.ts +14 -0
  175. package/lib/components/Filter/FilterLinkList/index.d.ts +3 -0
  176. package/lib/components/Filter/FilterLinkList/index.js +3 -0
  177. package/lib/components/Filter/FilterOverviewLinkList/FilterOverviewLinkList.d.ts +19 -0
  178. package/lib/components/Filter/FilterOverviewLinkList/index.d.ts +3 -0
  179. package/lib/components/Filter/FilterOverviewLinkList/index.js +2 -0
  180. package/lib/components/Filter/FilterOverviewSearch/FilterOverviewSearch.d.ts +9 -0
  181. package/lib/components/Filter/FilterOverviewSearch/index.d.ts +3 -0
  182. package/lib/components/Filter/FilterOverviewSearch/index.js +2 -0
  183. package/lib/components/Filter/FilterOverviewSearch/styles.module.scss +14 -0
  184. package/lib/components/Filter/FilterOverviewSearch/styles.module.scss.d.ts +9 -0
  185. package/lib/components/Filter/FilterResultCountAndSortWrapper/FilterResultCountAndSortWrapper.d.ts +8 -0
  186. package/lib/components/Filter/FilterResultCountAndSortWrapper/index.d.ts +3 -0
  187. package/lib/components/Filter/FilterResultCountAndSortWrapper/index.js +2 -0
  188. package/lib/components/Filter/FilterResultCountAndSortWrapper/styles.module.scss +17 -0
  189. package/lib/components/Filter/FilterResultCountAndSortWrapper/styles.module.scss.d.ts +11 -0
  190. package/lib/components/Filter/FilterSearch/FilterSearch.d.ts +19 -0
  191. package/lib/components/Filter/FilterSearch/index.d.ts +3 -0
  192. package/lib/components/Filter/FilterSearch/index.js +2 -0
  193. package/lib/components/Filter/FilterSearch/styles.module.scss +181 -0
  194. package/lib/components/Filter/FilterSearch/styles.module.scss.d.ts +16 -0
  195. package/lib/components/Filter/FilterSort/FilterSort.d.ts +8 -0
  196. package/lib/components/Filter/FilterSort/index.d.ts +3 -0
  197. package/lib/components/Filter/FilterSort/index.js +2 -0
  198. package/lib/components/Filter/FilterSort/styles.module.scss +33 -0
  199. package/lib/components/Filter/FilterSort/styles.module.scss.d.ts +11 -0
  200. package/lib/components/Filter/getFilterChips/getFilterChips.d.ts +17 -0
  201. package/lib/components/Filter/getFilterChips/index.d.ts +3 -0
  202. package/lib/components/Filter/getFilterChips/index.js +2 -0
  203. package/lib/components/Filter/index.d.ts +25 -0
  204. package/lib/components/Filter/index.js +137 -0
  205. package/lib/components/Filter/index.js.map +1 -0
  206. package/lib/components/Filter/resourceHelper.d.ts +3 -0
  207. package/lib/components/Filter/resourcesMock.d.ts +41 -0
  208. package/lib/components/Filter/useFilter.d.ts +20 -0
  209. package/lib/components/Filter/useFilterDrawer.d.ts +11 -0
  210. package/lib/components/Filter/utils.d.ts +81 -0
  211. package/lib/components/HelpBubble/index.js +3 -3
  212. package/lib/components/HelpBubble/index.js.map +1 -1
  213. package/lib/components/HelpPanel/index.js +2 -2
  214. package/lib/components/HelpPanel/index.js.map +1 -1
  215. package/lib/components/HelpTriggerInline/index.js +2 -2
  216. package/lib/components/HelpTriggerInline/index.js.map +1 -1
  217. package/lib/components/Icons/Filter.js +1 -43
  218. package/lib/components/Icons/Search.js +1 -25
  219. package/lib/components/Label/utils.d.ts +1 -0
  220. package/lib/components/Loader/index.js +4 -4
  221. package/lib/components/Loader/index.js.map +1 -1
  222. package/lib/components/Modal/index.js +9 -9
  223. package/lib/components/Modal/index.js.map +1 -1
  224. package/lib/components/NotificationPanel/index.js +6 -6
  225. package/lib/components/NotificationPanel/index.js.map +1 -1
  226. package/lib/components/Panel/index.js +12 -12
  227. package/lib/components/Panel/index.js.map +1 -1
  228. package/lib/components/PanelList/index.js +3 -3
  229. package/lib/components/PanelList/index.js.map +1 -1
  230. package/lib/components/PopMenu/index.js +3 -3
  231. package/lib/components/PopMenu/index.js.map +1 -1
  232. package/lib/components/Progressbar/index.js +2 -2
  233. package/lib/components/Progressbar/index.js.map +1 -1
  234. package/lib/components/PromoPanel/index.js +2 -2
  235. package/lib/components/PromoPanel/index.js.map +1 -1
  236. package/lib/components/Select/Select.d.ts +2 -0
  237. package/lib/components/Select/styles.module.scss +1 -0
  238. package/lib/components/ServiceMessage/index.js +5 -5
  239. package/lib/components/ServiceMessage/index.js.map +1 -1
  240. package/lib/components/SharingStatus/index.js +4 -4
  241. package/lib/components/SharingStatus/index.js.map +1 -1
  242. package/lib/components/Step/index.js +2 -2
  243. package/lib/components/Step/index.js.map +1 -1
  244. package/lib/components/Stepper/index.js +2 -2
  245. package/lib/components/Stepper/index.js.map +1 -1
  246. package/lib/components/StickyNote/index.js +8 -8
  247. package/lib/components/StickyNote/index.js.map +1 -1
  248. package/lib/components/Table/index.js +2 -2
  249. package/lib/components/Table/index.js.map +1 -1
  250. package/lib/components/Tabs/index.js +4 -4
  251. package/lib/components/Tabs/index.js.map +1 -1
  252. package/lib/components/Tag/index.js +2 -2
  253. package/lib/components/Tag/index.js.map +1 -1
  254. package/lib/components/Tile/index.js +4 -4
  255. package/lib/components/Tile/index.js.map +1 -1
  256. package/lib/components/Title/Title.d.ts +2 -0
  257. package/lib/components/Toggle/index.js +7 -7
  258. package/lib/components/Toggle/index.js.map +1 -1
  259. package/lib/components/Validation/index.js +2 -2
  260. package/lib/components/Validation/index.js.map +1 -1
  261. package/lib/getFilterChips.js +30 -0
  262. package/lib/getFilterChips.js.map +1 -0
  263. package/lib/index.d.ts +1 -0
  264. package/lib/index.js +2 -1
  265. package/lib/resource.js +4 -0
  266. package/lib/resource.js.map +1 -0
  267. package/lib/resourceHelper.js +31 -0
  268. package/lib/resourceHelper.js.map +1 -0
  269. package/lib/resources/HN.Designsystem.Drawer.nn-NO.json.d.ts +7 -0
  270. package/lib/resources/HN.Designsystem.Filter.en-GB.json.d.ts +13 -0
  271. package/lib/resources/HN.Designsystem.Filter.nb-NO.json.d.ts +13 -0
  272. package/lib/utils/resource.d.ts +6 -0
  273. package/lib/utils/resource.js +2 -0
  274. package/lib/utils2.js +11 -9
  275. package/lib/utils2.js.map +1 -1
  276. package/lib/utils3.js +5 -5
  277. package/lib/utils3.js.map +1 -1
  278. package/package.json +1 -1
  279. package/lib/components/Chip/index.js.map +0 -1
  280. package/lib/components/Icons/Filter.js.map +0 -1
  281. package/lib/components/Icons/Search.js.map +0 -1
@@ -0,0 +1,137 @@
1
+ import { n as DrawerNavigationContext, r as useDrawerNavigation } from "../../DrawerNavigation.js";
2
+ import { t as DrawerNavigation_default } from "../../DrawerNavigation2.js";
3
+ import { t as FilterButton_default } from "../../FilterButton.js";
4
+ import { t as FilterButtonAndChipsWrapper_default } from "../../FilterButtonAndChipsWrapper.js";
5
+ import { t as FilterDrawer_default } from "../../FilterDrawer.js";
6
+ import { r as Link } from "../../FilterLinkList.js";
7
+ import { t as FilterLinkList_default } from "../../FilterLinkList2.js";
8
+ import { t as FilterOverviewLinkList_default } from "../../FilterOverviewLinkList.js";
9
+ import { t as FilterOverviewSearch_default } from "../../FilterOverviewSearch.js";
10
+ import { t as FilterResultCountAndSortWrapper_default } from "../../FilterResultCountAndSortWrapper.js";
11
+ import { t as FilterSearch_default } from "../../FilterSearch2.js";
12
+ import { t as FilterSort_default } from "../../FilterSort.js";
13
+ import { t as getFilterChips_default } from "../../getFilterChips.js";
14
+ import { useCallback, useState } from "react";
15
+ const useFilter = (options) => {
16
+ const [filters, setFiltersState] = useState(() => ({ ...options?.defaultValues }));
17
+ const removeFilter = (filterKey, optionValue) => {
18
+ setFiltersState((prev) => {
19
+ const current = prev[filterKey];
20
+ if (current === void 0) return prev;
21
+ if (optionValue !== void 0 && Array.isArray(current)) {
22
+ const updated = current.filter((v) => v !== optionValue);
23
+ if (updated.length === 0) {
24
+ const { [filterKey]: _removed$1, ...rest$1 } = prev;
25
+ return rest$1;
26
+ }
27
+ return {
28
+ ...prev,
29
+ [filterKey]: updated
30
+ };
31
+ }
32
+ const { [filterKey]: _removed, ...rest } = prev;
33
+ return rest;
34
+ });
35
+ };
36
+ const setFilter = (name, value) => {
37
+ if (value === void 0) {
38
+ removeFilter(name);
39
+ return;
40
+ }
41
+ setFiltersState((prev) => ({
42
+ ...prev,
43
+ [name]: value
44
+ }));
45
+ };
46
+ const setFilters = (newFilters) => {
47
+ setFiltersState(newFilters);
48
+ };
49
+ const resetFilters = () => {
50
+ setFiltersState({ ...options?.defaultValues });
51
+ };
52
+ const resetFiltersToEmpty = () => {
53
+ setFiltersState({});
54
+ };
55
+ return {
56
+ filters,
57
+ setFilter,
58
+ setFilters,
59
+ removeFilter,
60
+ resetFilters,
61
+ resetFiltersToEmpty
62
+ };
63
+ };
64
+ const useFilterDrawer = () => {
65
+ const [isOpen, setIsOpen] = useState(false);
66
+ const [initialView, setInitialView] = useState(void 0);
67
+ return {
68
+ isOpen,
69
+ initialView,
70
+ open: useCallback((view) => {
71
+ setInitialView(view);
72
+ setIsOpen(true);
73
+ }, []),
74
+ close: useCallback(() => {
75
+ setIsOpen(false);
76
+ }, [])
77
+ };
78
+ };
79
+ const createFilterConfig = (categories) => {
80
+ const defaultValues = {};
81
+ const labelMaps = /* @__PURE__ */ new Map();
82
+ for (const key in categories) {
83
+ const category = categories[key];
84
+ if (category?.defaultValue !== void 0) defaultValues[key] = category.defaultValue;
85
+ if (category?.options) {
86
+ const resolve = category.getLabel ?? ((o) => String(o.value));
87
+ const map = /* @__PURE__ */ new Map();
88
+ for (const opt of category.options) map.set(opt.value, resolve(opt));
89
+ labelMaps.set(key, map);
90
+ }
91
+ }
92
+ const getLabel = (key, value) => {
93
+ return labelMaps.get(key)?.get(value) ?? String(value);
94
+ };
95
+ return {
96
+ filterOptions: { defaultValues },
97
+ getLabel
98
+ };
99
+ };
100
+ const matchFilter = {
101
+ arrayIncludes: (accessor) => (item, value) => {
102
+ const filterValues = Array.isArray(value) ? value : [value];
103
+ const itemValue = accessor(item);
104
+ if (Array.isArray(itemValue)) return itemValue.some((v) => filterValues.includes(v));
105
+ return filterValues.includes(itemValue);
106
+ },
107
+ exactMatch: (accessor) => (item, value) => {
108
+ if (Array.isArray(value)) return value.includes(accessor(item));
109
+ return accessor(item) === value;
110
+ },
111
+ booleanToggle: (accessor) => (item, value) => {
112
+ return !(Array.isArray(value) ? value.includes(true) : value === true) || accessor(item);
113
+ },
114
+ textSearch: (...accessors) => (item, value) => {
115
+ const search = String(value).toLowerCase();
116
+ return accessors.some((accessor) => accessor(item)?.toLowerCase().includes(search));
117
+ }
118
+ };
119
+ const filterItems = (items, filters, matchers) => {
120
+ return items.filter((item) => {
121
+ for (const key in matchers) {
122
+ const value = filters[key];
123
+ if (value === void 0) continue;
124
+ const matcher = matchers[key];
125
+ if (matcher && !matcher(item, value)) return false;
126
+ }
127
+ return true;
128
+ });
129
+ };
130
+ const toggleArrayFilter = (filter, filterKey, value) => {
131
+ const current = filter.filters[filterKey] ?? [];
132
+ const updated = current.includes(value) ? current.filter((v) => v !== value) : [...current, value];
133
+ filter.setFilter(filterKey, updated.length > 0 ? updated : void 0);
134
+ };
135
+ export { DrawerNavigation_default as DrawerNavigation, DrawerNavigationContext, FilterButton_default as FilterButton, FilterButtonAndChipsWrapper_default as FilterButtonAndChipsWrapper, FilterDrawer_default as FilterDrawer, FilterLinkList_default as FilterLinkList, FilterOverviewLinkList_default as FilterOverviewLinkList, FilterOverviewSearch_default as FilterOverviewSearch, FilterResultCountAndSortWrapper_default as FilterResultCountAndSortWrapper, FilterSearch_default as FilterSearch, FilterSort_default as FilterSort, Link, createFilterConfig, filterItems, getFilterChips_default as getFilterChips, matchFilter, toggleArrayFilter, useDrawerNavigation, useFilter, useFilterDrawer };
136
+
137
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Filter/useFilter.ts","../../../src/components/Filter/useFilterDrawer.ts","../../../src/components/Filter/utils.ts"],"sourcesContent":["import { useState } from 'react';\n\n// Key er string men value kan være hva som helst og er ukjent for oss internt i useFilter. Den er typesikker for consumer.\n// Dette mønsteret lar oss ha ulike typer i samme objekt.\nexport type FilterValues = Record<string, unknown>;\n\nexport interface UseFilterOptions<T extends FilterValues> {\n /** Initial filter values */\n defaultValues?: Partial<T>;\n}\n\nexport interface UseFilterReturn<T extends FilterValues> {\n /** Current filter state */\n filters: Partial<T>;\n /** Update a single filter. Pass undefined to remove it. */\n setFilter: <K extends keyof T>(name: K, value: T[K] | undefined) => void;\n /** Replace all filters at once (useful for applying draft/delayed filters) */\n setFilters: (filters: Partial<T>) => void;\n /** Remove a filter entirely, or a specific value from an array filter */\n removeFilter: (filterKey: keyof T | string, optionValue?: unknown) => void;\n /** Reset filters to default values */\n resetFilters: () => void;\n /** Resets to empty filter */\n resetFiltersToEmpty: () => void;\n}\n\nexport const useFilter = <T extends FilterValues>(options?: UseFilterOptions<T>): UseFilterReturn<T> => {\n const [filters, setFiltersState] = useState<Partial<T>>(() => ({ ...options?.defaultValues }) as Partial<T>);\n\n // Fjern et filter helt, eller fjern en spesifikk verdi fra et array-filter.\n const removeFilter = (filterKey: keyof T, optionValue?: unknown): void => {\n setFiltersState(prev => {\n const current = prev[filterKey];\n if (current === undefined) return prev;\n if (optionValue !== undefined && Array.isArray(current)) {\n const updated = current.filter(v => v !== optionValue);\n if (updated.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [filterKey as string]: _removed, ...rest } = prev;\n return rest as Partial<T>;\n }\n return { ...prev, [filterKey]: updated };\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [filterKey as string]: _removed, ...rest } = prev;\n return rest as Partial<T>;\n });\n };\n\n // Sett en filtervalue. Send inn undefined for å fjerne filteret.\n const setFilter = <K extends keyof T>(name: K, value: T[K] | undefined): void => {\n if (value === undefined) {\n removeFilter(name);\n return;\n }\n setFiltersState(prev => ({ ...prev, [name]: value }));\n };\n\n // Erstatt alle filtre på en gang (f.eks. ved \"Bruk filter\" i delayed filtrering).\n const setFilters = (newFilters: Partial<T>): void => {\n setFiltersState(newFilters);\n };\n\n const resetFilters = (): void => {\n setFiltersState({ ...options?.defaultValues } as Partial<T>);\n };\n\n const resetFiltersToEmpty = (): void => {\n setFiltersState({});\n };\n\n return { filters, setFilter, setFilters, removeFilter, resetFilters, resetFiltersToEmpty };\n};\n","import { useState, useCallback } from 'react';\n\nexport interface UseFilterDrawerReturn<ViewId extends string = string> {\n /** Whether the drawer is currently open */\n isOpen: boolean;\n /** The view to navigate to when the drawer opens */\n initialView: ViewId | undefined;\n /** Open the drawer, optionally navigating directly to a specific view */\n open: (view?: ViewId) => void;\n /** Close the drawer */\n close: () => void;\n}\n\nexport const useFilterDrawer = <ViewId extends string = string>(): UseFilterDrawerReturn<ViewId> => {\n const [isOpen, setIsOpen] = useState(false);\n const [initialView, setInitialView] = useState<ViewId | undefined>(undefined);\n\n const open = useCallback((view?: ViewId): void => {\n setInitialView(view);\n setIsOpen(true);\n }, []);\n\n const close = useCallback((): void => {\n setIsOpen(false);\n }, []);\n\n return { isOpen, initialView, open, close };\n};\n","import type { FilterValues, UseFilterOptions, UseFilterReturn } from './useFilter';\n\n/** Et filtervalg med verdi og visningstekst */\nexport interface FilterOption<V = string> {\n value: V;\n label: string;\n}\n\n// Hvis V er et array (f.eks. string[]), hent ut typen inni arrayet (string).\n// Hvis V ikke er et array (f.eks. boolean), bruk V som den er.\n// Brukes for å sikre at options-listen matcher elementene, ikke hele arrayet.\n// Eksempel: FilterCategoryConfig<string[]> → options er FilterOption<string>[], ikke FilterOption<string[]>[]\ntype OptionValue<V> = V extends (infer U)[] ? U : V;\n\n/** Konfigurasjon for en filterkategori. */\nexport interface FilterCategoryConfig<V = unknown> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options?: ({ value: OptionValue<V> } & { [key: string]: any })[];\n defaultValue?: V;\n /** Hent visningstekst fra et option-objekt. Hvis ikke satt, brukes String(value). */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getLabel?: (option: any) => string;\n}\n\nexport interface FilterConfigResult<T extends FilterValues> {\n /** Options for useFilter (defaultValues) */\n filterOptions: UseFilterOptions<T>;\n /** Look up the display label for a filter value */\n getLabel: (key: keyof T, value: unknown) => string;\n}\n\n/**\n * Lager UseFilterOptions fra et oppsett av filterkategorier.\n * Samler defaultValues og label-oppslag automatisk fra config.\n *\n * Eksempel:\n * const { filterOptions, getLabel } = createFilterConfig<MyFilters>({\n * sykehus: { options: sykehusOptions, defaultValue: ['haukeland'], getLabel: o => o.label },\n * status: { options: statusOptions, getLabel: o => o.displayText },\n * });\n * const filter = useFilter(filterOptions);\n * getLabel('sykehus', 'haukeland') // → 'Haukeland universitetssjukehus'\n */\nexport const createFilterConfig = <T extends FilterValues>(categories: {\n [K in keyof T]?: FilterCategoryConfig<T[K]>;\n}): FilterConfigResult<T> => {\n const defaultValues = {} as Partial<T>;\n const labelMaps = new Map<string, Map<unknown, string>>();\n\n for (const key in categories) {\n const category = categories[key];\n if (category?.defaultValue !== undefined) {\n defaultValues[key] = category.defaultValue as T[typeof key];\n }\n if (category?.options) {\n const resolve = category.getLabel ?? ((o: { value: unknown }): string => String(o.value));\n const map = new Map<unknown, string>();\n for (const opt of category.options) {\n map.set(opt.value, resolve(opt));\n }\n labelMaps.set(key, map);\n }\n }\n\n const getLabel = (key: keyof T, value: unknown): string => {\n return labelMaps.get(key as string)?.get(value) ?? String(value); // todo: fallback til .displaytext om det ikke er sendt inn noe, og String(value) om .label ikke finnes\n };\n\n return { filterOptions: { defaultValues }, getLabel };\n};\n\n/**\n * Ferdige matcher-funksjoner for typiske filter mønster.\n * Brukes som deler i matcher objektet til filterItems.\n *\n * Eksempel:\n * const filterMatchers = {\n * categories: matchFilter.arrayIncludes<Medisin>(m => m.sykehus),\n * status: matchFilter.exactMatch<Medisin>(m => m.status),\n * eResept: matchFilter.booleanToggle<Medisin>(m => m.eResept),\n * };\n */\nexport const matchFilter = {\n /** Array-filter: matcher hvis det er overlapp mellom filterverdier og item-verdier (OR-logikk). */\n arrayIncludes:\n <TItem>(accessor: (item: TItem) => unknown) =>\n (item: TItem, value: unknown): boolean => {\n const filterValues = Array.isArray(value) ? value : [value];\n const itemValue = accessor(item);\n if (Array.isArray(itemValue)) {\n return itemValue.some(v => filterValues.includes(v));\n }\n return filterValues.includes(itemValue);\n },\n\n /** Eksakt match: matcher hvis item-verdien er lik én av filterverdiene */\n exactMatch:\n <TItem>(accessor: (item: TItem) => unknown) =>\n (item: TItem, value: unknown): boolean => {\n if (Array.isArray(value)) {\n return value.includes(accessor(item));\n }\n return accessor(item) === value;\n },\n\n /** Boolean toggle: når filterverdien er true, inkluder kun items der accessor returnerer true */\n booleanToggle:\n <TItem>(accessor: (item: TItem) => boolean) =>\n (item: TItem, value: unknown): boolean => {\n const active = Array.isArray(value) ? value.includes(true) : value === true;\n return !active || accessor(item);\n },\n\n /** Fritekstsøk: matcher hvis søketeksten finnes i ett eller flere felt (case-insensitive) */\n textSearch:\n <TItem>(...accessors: ((item: TItem) => string | undefined)[]) =>\n (item: TItem, value: unknown): boolean => {\n const search = String(value).toLowerCase();\n return accessors.some(accessor => accessor(item)?.toLowerCase().includes(search));\n },\n};\n\n/**\n * Filtrerer en liste med items basert på aktive filterverdier.\n * Hvert filter som er satt må matche for at et item skal inkluderes (AND-logikk).\n *\n * Eksempel:\n * const filtered = filterItems(medisiner, filter.filters, {\n * sykehus: matchFilter.arrayIncludes<Medisin>(m => m.sykehus),\n * reseptstatus: matchFilter.exactMatch<Medisin>(m => m.reseptstatus),\n * eResept: matchFilter.booleanToggle<Medisin>(m => m.eResept),\n * });\n */\n\n/** Type for matcher-objektet som sendes til filterItems. Sikrer at keys matcher filtertypen. */\nexport type FilterMatchers<TItem, T extends FilterValues> = { [K in keyof T]?: (item: TItem, value: NonNullable<T[K]>) => boolean };\n\nexport const filterItems = <TItem, T extends FilterValues>(\n items: TItem[],\n filters: Partial<T>,\n matchers: FilterMatchers<TItem, T>\n): TItem[] => {\n return items.filter(item => {\n for (const key in matchers) {\n const value = filters[key];\n if (value === undefined) {\n continue;\n }\n const matcher = matchers[key];\n if (matcher && !matcher(item, value as NonNullable<T[typeof key]>)) {\n return false;\n }\n }\n return true;\n });\n};\n\n/**\n * Toggler en verdi i et array-basert filter.\n * Legger til verdien hvis den ikke finnes, fjerner den hvis den finnes.\n * Setter filteret til undefined hvis arrayet blir tomt.\n */\nexport const toggleArrayFilter = <T extends FilterValues, K extends keyof T>(\n filter: UseFilterReturn<T>,\n filterKey: K,\n value: T[K] extends (infer U)[] | undefined ? U : never\n): void => {\n const current = (filter.filters[filterKey] ?? []) as unknown[];\n const updated = current.includes(value) ? current.filter(v => v !== value) : [...current, value];\n filter.setFilter(filterKey, (updated.length > 0 ? updated : undefined) as T[K] | undefined);\n};\n"],"mappings":";;;;;;;;;;;;;;AA0BA,MAAa,aAAqC,YAAsD;CACtG,MAAM,CAAC,SAAS,mBAAmB,gBAA4B,EAAE,GAAG,SAAS,eAAe,EAAgB;CAG5G,MAAM,gBAAgB,WAAoB,gBAAgC;AACxE,mBAAgB,SAAQ;GACtB,MAAM,UAAU,KAAK;AACrB,OAAI,YAAY,KAAA,EAAW,QAAO;AAClC,OAAI,gBAAgB,KAAA,KAAa,MAAM,QAAQ,QAAQ,EAAE;IACvD,MAAM,UAAU,QAAQ,QAAO,MAAK,MAAM,YAAY;AACtD,QAAI,QAAQ,WAAW,GAAG;KAExB,MAAM,GAAG,YAAsB,YAAU,GAAG,WAAS;AACrD,YAAO;;AAET,WAAO;KAAE,GAAG;MAAO,YAAY;KAAS;;GAG1C,MAAM,GAAG,YAAsB,UAAU,GAAG,SAAS;AACrD,UAAO;IACP;;CAIJ,MAAM,aAAgC,MAAS,UAAkC;AAC/E,MAAI,UAAU,KAAA,GAAW;AACvB,gBAAa,KAAK;AAClB;;AAEF,mBAAgB,UAAS;GAAE,GAAG;IAAO,OAAO;GAAO,EAAE;;CAIvD,MAAM,cAAc,eAAiC;AACnD,kBAAgB,WAAW;;CAG7B,MAAM,qBAA2B;AAC/B,kBAAgB,EAAE,GAAG,SAAS,eAAe,CAAe;;CAG9D,MAAM,4BAAkC;AACtC,kBAAgB,EAAE,CAAC;;AAGrB,QAAO;EAAE;EAAS;EAAW;EAAY;EAAc;EAAc;EAAqB;;AC1D5F,MAAa,wBAAuF;CAClG,MAAM,CAAC,QAAQ,aAAa,SAAS,MAAM;CAC3C,MAAM,CAAC,aAAa,kBAAkB,SAA6B,KAAA,EAAU;AAW7E,QAAO;EAAE;EAAQ;EAAa,MATjB,aAAa,SAAwB;AAChD,kBAAe,KAAK;AACpB,aAAU,KAAK;KACd,EAAE,CAAC;EAM8B,OAJtB,kBAAwB;AACpC,aAAU,MAAM;KACf,EAAE,CAAC;EAEqC;;ACiB7C,MAAa,sBAA8C,eAE9B;CAC3B,MAAM,gBAAgB,EAAE;CACxB,MAAM,4BAAY,IAAI,KAAmC;AAEzD,MAAK,MAAM,OAAO,YAAY;EAC5B,MAAM,WAAW,WAAW;AAC5B,MAAI,UAAU,iBAAiB,KAAA,EAC7B,eAAc,OAAO,SAAS;AAEhC,MAAI,UAAU,SAAS;GACrB,MAAM,UAAU,SAAS,cAAc,MAAkC,OAAO,EAAE,MAAM;GACxF,MAAM,sBAAM,IAAI,KAAsB;AACtC,QAAK,MAAM,OAAO,SAAS,QACzB,KAAI,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC;AAElC,aAAU,IAAI,KAAK,IAAI;;;CAI3B,MAAM,YAAY,KAAc,UAA2B;AACzD,SAAO,UAAU,IAAI,IAAc,EAAE,IAAI,MAAM,IAAI,OAAO,MAAM;;AAGlE,QAAO;EAAE,eAAe,EAAE,eAAe;EAAE;EAAU;;AAcvD,MAAa,cAAc;CAEzB,gBACU,cACP,MAAa,UAA4B;EACxC,MAAM,eAAe,MAAM,QAAQ,MAAM,GAAG,QAAQ,CAAC,MAAM;EAC3D,MAAM,YAAY,SAAS,KAAK;AAChC,MAAI,MAAM,QAAQ,UAAU,CAC1B,QAAO,UAAU,MAAK,MAAK,aAAa,SAAS,EAAE,CAAC;AAEtD,SAAO,aAAa,SAAS,UAAU;;CAI3C,aACU,cACP,MAAa,UAA4B;AACxC,MAAI,MAAM,QAAQ,MAAM,CACtB,QAAO,MAAM,SAAS,SAAS,KAAK,CAAC;AAEvC,SAAO,SAAS,KAAK,KAAK;;CAI9B,gBACU,cACP,MAAa,UAA4B;AAExC,SAAO,EADQ,MAAM,QAAQ,MAAM,GAAG,MAAM,SAAS,KAAK,GAAG,UAAU,SACrD,SAAS,KAAK;;CAIpC,aACU,GAAG,eACV,MAAa,UAA4B;EACxC,MAAM,SAAS,OAAO,MAAM,CAAC,aAAa;AAC1C,SAAO,UAAU,MAAK,aAAY,SAAS,KAAK,EAAE,aAAa,CAAC,SAAS,OAAO,CAAC;;CAEtF;AAiBD,MAAa,eACX,OACA,SACA,aACY;AACZ,QAAO,MAAM,QAAO,SAAQ;AAC1B,OAAK,MAAM,OAAO,UAAU;GAC1B,MAAM,QAAQ,QAAQ;AACtB,OAAI,UAAU,KAAA,EACZ;GAEF,MAAM,UAAU,SAAS;AACzB,OAAI,WAAW,CAAC,QAAQ,MAAM,MAAoC,CAChE,QAAO;;AAGX,SAAO;GACP;;AAQJ,MAAa,qBACX,QACA,WACA,UACS;CACT,MAAM,UAAW,OAAO,QAAQ,cAAc,EAAE;CAChD,MAAM,UAAU,QAAQ,SAAS,MAAM,GAAG,QAAQ,QAAO,MAAK,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,MAAM;AAChG,QAAO,UAAU,WAAY,QAAQ,SAAS,IAAI,UAAU,KAAA,EAA+B"}
@@ -0,0 +1,3 @@
1
+ import { HNDesignsystemFilter } from '../../resources/Resources';
2
+ import { LanguageLocales } from '../../constants';
3
+ export declare const getResources: (language: LanguageLocales) => HNDesignsystemFilter;
@@ -0,0 +1,41 @@
1
+ import { LanguageLocales } from '../../constants';
2
+ export declare const getResources: (language: LanguageLocales) => {
3
+ verktoydata_aa_name: string;
4
+ verktoydata_aa_ingress: string;
5
+ verktoydata_grubl_name: string;
6
+ verktoydata_grubl_ingress: string;
7
+ verktoydata_mm_name: string;
8
+ verktoydata_mm_ingress: string;
9
+ verktoydata_hverdagshjelpen_name: string;
10
+ verktoydata_hverdagshjelpen_ingress: string;
11
+ verktoydata_ungmestring_name: string;
12
+ verktoydata_ungmestring_ingress: string;
13
+ verktoydata_bevegelsesglede_name: string;
14
+ verktoydata_bevegelsesglede_ingress: string;
15
+ verktoydata_tryggfodsel_name: string;
16
+ verktoydata_tryggfodsel_ingress: string;
17
+ verktoydata_skadekompasset_name: string;
18
+ verktoydata_skadekompasset_ingress: string;
19
+ verktoydata_seniorbalanse_name: string;
20
+ verktoydata_seniorbalanse_ingress: string;
21
+ verktoydata_tankevenn_name: string;
22
+ verktoydata_tankevenn_ingress: string;
23
+ filterOptionTitles_omrade: string;
24
+ filterOptionTitles_passerfor: string;
25
+ filterOptionTitles_type: string;
26
+ omradeOptions_psykiskhelse: string;
27
+ omradeOptions_graviditet: string;
28
+ omradeOptions_livsstil: string;
29
+ omradeOptions_sykdom: string;
30
+ omradeOptions_rad: string;
31
+ omradeOptions_tanker: string;
32
+ passerForOptions_barn: string;
33
+ passerForOptions_ungdom: string;
34
+ passerForOptions_voksne: string;
35
+ passerForOptions_eldre: string;
36
+ typeOptions_app: string;
37
+ typeOptions_web: string;
38
+ filterOption_omrade_legend: string;
39
+ filterOption_passerFor_legend: string;
40
+ filterOption_type_legend: string;
41
+ };
@@ -0,0 +1,20 @@
1
+ export type FilterValues = Record<string, unknown>;
2
+ export interface UseFilterOptions<T extends FilterValues> {
3
+ /** Initial filter values */
4
+ defaultValues?: Partial<T>;
5
+ }
6
+ export interface UseFilterReturn<T extends FilterValues> {
7
+ /** Current filter state */
8
+ filters: Partial<T>;
9
+ /** Update a single filter. Pass undefined to remove it. */
10
+ setFilter: <K extends keyof T>(name: K, value: T[K] | undefined) => void;
11
+ /** Replace all filters at once (useful for applying draft/delayed filters) */
12
+ setFilters: (filters: Partial<T>) => void;
13
+ /** Remove a filter entirely, or a specific value from an array filter */
14
+ removeFilter: (filterKey: keyof T | string, optionValue?: unknown) => void;
15
+ /** Reset filters to default values */
16
+ resetFilters: () => void;
17
+ /** Resets to empty filter */
18
+ resetFiltersToEmpty: () => void;
19
+ }
20
+ export declare const useFilter: <T extends FilterValues>(options?: UseFilterOptions<T>) => UseFilterReturn<T>;
@@ -0,0 +1,11 @@
1
+ export interface UseFilterDrawerReturn<ViewId extends string = string> {
2
+ /** Whether the drawer is currently open */
3
+ isOpen: boolean;
4
+ /** The view to navigate to when the drawer opens */
5
+ initialView: ViewId | undefined;
6
+ /** Open the drawer, optionally navigating directly to a specific view */
7
+ open: (view?: ViewId) => void;
8
+ /** Close the drawer */
9
+ close: () => void;
10
+ }
11
+ export declare const useFilterDrawer: <ViewId extends string = string>() => UseFilterDrawerReturn<ViewId>;
@@ -0,0 +1,81 @@
1
+ import { FilterValues, UseFilterOptions, UseFilterReturn } from './useFilter';
2
+ /** Et filtervalg med verdi og visningstekst */
3
+ export interface FilterOption<V = string> {
4
+ value: V;
5
+ label: string;
6
+ }
7
+ type OptionValue<V> = V extends (infer U)[] ? U : V;
8
+ /** Konfigurasjon for en filterkategori. */
9
+ export interface FilterCategoryConfig<V = unknown> {
10
+ options?: ({
11
+ value: OptionValue<V>;
12
+ } & {
13
+ [key: string]: any;
14
+ })[];
15
+ defaultValue?: V;
16
+ /** Hent visningstekst fra et option-objekt. Hvis ikke satt, brukes String(value). */
17
+ getLabel?: (option: any) => string;
18
+ }
19
+ export interface FilterConfigResult<T extends FilterValues> {
20
+ /** Options for useFilter (defaultValues) */
21
+ filterOptions: UseFilterOptions<T>;
22
+ /** Look up the display label for a filter value */
23
+ getLabel: (key: keyof T, value: unknown) => string;
24
+ }
25
+ /**
26
+ * Lager UseFilterOptions fra et oppsett av filterkategorier.
27
+ * Samler defaultValues og label-oppslag automatisk fra config.
28
+ *
29
+ * Eksempel:
30
+ * const { filterOptions, getLabel } = createFilterConfig<MyFilters>({
31
+ * sykehus: { options: sykehusOptions, defaultValue: ['haukeland'], getLabel: o => o.label },
32
+ * status: { options: statusOptions, getLabel: o => o.displayText },
33
+ * });
34
+ * const filter = useFilter(filterOptions);
35
+ * getLabel('sykehus', 'haukeland') // → 'Haukeland universitetssjukehus'
36
+ */
37
+ export declare const createFilterConfig: <T extends FilterValues>(categories: { [K in keyof T]?: FilterCategoryConfig<T[K]>; }) => FilterConfigResult<T>;
38
+ /**
39
+ * Ferdige matcher-funksjoner for typiske filter mønster.
40
+ * Brukes som deler i matcher objektet til filterItems.
41
+ *
42
+ * Eksempel:
43
+ * const filterMatchers = {
44
+ * categories: matchFilter.arrayIncludes<Medisin>(m => m.sykehus),
45
+ * status: matchFilter.exactMatch<Medisin>(m => m.status),
46
+ * eResept: matchFilter.booleanToggle<Medisin>(m => m.eResept),
47
+ * };
48
+ */
49
+ export declare const matchFilter: {
50
+ /** Array-filter: matcher hvis det er overlapp mellom filterverdier og item-verdier (OR-logikk). */
51
+ arrayIncludes: <TItem>(accessor: (item: TItem) => unknown) => (item: TItem, value: unknown) => boolean;
52
+ /** Eksakt match: matcher hvis item-verdien er lik én av filterverdiene */
53
+ exactMatch: <TItem>(accessor: (item: TItem) => unknown) => (item: TItem, value: unknown) => boolean;
54
+ /** Boolean toggle: når filterverdien er true, inkluder kun items der accessor returnerer true */
55
+ booleanToggle: <TItem>(accessor: (item: TItem) => boolean) => (item: TItem, value: unknown) => boolean;
56
+ /** Fritekstsøk: matcher hvis søketeksten finnes i ett eller flere felt (case-insensitive) */
57
+ textSearch: <TItem>(...accessors: ((item: TItem) => string | undefined)[]) => (item: TItem, value: unknown) => boolean;
58
+ };
59
+ /**
60
+ * Filtrerer en liste med items basert på aktive filterverdier.
61
+ * Hvert filter som er satt må matche for at et item skal inkluderes (AND-logikk).
62
+ *
63
+ * Eksempel:
64
+ * const filtered = filterItems(medisiner, filter.filters, {
65
+ * sykehus: matchFilter.arrayIncludes<Medisin>(m => m.sykehus),
66
+ * reseptstatus: matchFilter.exactMatch<Medisin>(m => m.reseptstatus),
67
+ * eResept: matchFilter.booleanToggle<Medisin>(m => m.eResept),
68
+ * });
69
+ */
70
+ /** Type for matcher-objektet som sendes til filterItems. Sikrer at keys matcher filtertypen. */
71
+ export type FilterMatchers<TItem, T extends FilterValues> = {
72
+ [K in keyof T]?: (item: TItem, value: NonNullable<T[K]>) => boolean;
73
+ };
74
+ export declare const filterItems: <TItem, T extends FilterValues>(items: TItem[], filters: Partial<T>, matchers: FilterMatchers<TItem, T>) => TItem[];
75
+ /**
76
+ * Toggler en verdi i et array-basert filter.
77
+ * Legger til verdien hvis den ikke finnes, fjerner den hvis den finnes.
78
+ * Setter filteret til undefined hvis arrayet blir tomt.
79
+ */
80
+ export declare const toggleArrayFilter: <T extends FilterValues, K extends keyof T>(filter: UseFilterReturn<T>, filterKey: K, value: T[K] extends (infer U)[] | undefined ? U : never) => void;
81
+ export {};
@@ -3,7 +3,7 @@ import { t as AnchorLink_default } from "../../AnchorLink.js";
3
3
  import { n as useLanguage } from "../../useLanguage.js";
4
4
  import { t as Close_default } from "../../Close.js";
5
5
  import { n as PopOverVariant, t as PopOver_default } from "../../PopOver.js";
6
- import classNames from "classnames";
6
+ import cn from "classnames";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import styles from "./styles.module.scss";
9
9
  var HN_Designsystem_HelpBubble_nb_NO_default = { ariaLabel: "Hjelpetekst" };
@@ -22,8 +22,8 @@ var HelpBubble = (props) => {
22
22
  ...getResources(language),
23
23
  ...resources
24
24
  };
25
- const helpBubbleClasses = classNames(styles.helpbubble, className);
26
- const contentClasses = classNames(styles.helpbubble__content);
25
+ const helpBubbleClasses = cn(styles.helpbubble, className);
26
+ const contentClasses = cn(styles.helpbubble__content);
27
27
  const renderLink = () => {
28
28
  if (onLinkClick && linkText) return /* @__PURE__ */ jsx("button", {
29
29
  className: styles.helpbubble__link,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["HelpBubble: React.FC<HelpBubbleProps>","mergedResources: HNDesignsystemHelpBubble"],"sources":["../../../src/resources/HN.Designsystem.HelpBubble.nb-NO.json","../../../src/components/HelpBubble/resourceHelper.ts","../../../src/components/HelpBubble/HelpBubble.tsx","../../../src/components/HelpBubble/index.ts"],"sourcesContent":["{\n \"ariaLabel\": \"Hjelpetekst\"\n}\n","import type { HNDesignsystemHelpBubble } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport nbNO from '../../resources/HN.Designsystem.HelpBubble.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemHelpBubble => {\n switch (language) {\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import classNames from 'classnames';\n\nimport type { HNDesignsystemHelpBubble } from '../../resources/Resources';\nimport type { AnchorLinkTargets } from '../AnchorLink';\nimport type { PopOverProps } from '../PopOver';\n\nimport { AnalyticsId, LanguageLocales } from '../../constants';\nimport { useLanguage } from '../../hooks/useLanguage';\nimport AnchorLink from '../AnchorLink';\nimport Close from '../Close';\nimport PopOver, { PopOverVariant } from '../PopOver';\nimport { getResources } from './resourceHelper';\n\nimport styles from './styles.module.scss';\n\nexport const HelpBubbleVariant = PopOverVariant;\n\nexport interface HelpBubbleProps extends Pick<PopOverProps, 'children' | 'variant' | 'controllerRef' | 'role'> {\n /** Sets aria-labelledby of the bubble. */\n ariaLabelledById?: string;\n /** Id of the HelpBubble */\n helpBubbleId?: string;\n /** Content shown inside HelpBubble. */\n children: React.ReactNode;\n /** Ref for the element the HelpBubble is placed upon */\n controllerRef: React.RefObject<HTMLElement | SVGSVGElement | null>;\n /** Adds custom classes to the element. */\n className?: string;\n /** Determines the placement of the helpbubble. Default: automatic positioning. */\n variant?: keyof typeof HelpBubbleVariant;\n /** Show the bubble. Default: false. */\n showBubble?: boolean;\n /** Hide the close button in the bubble. */\n noCloseButton?: boolean;\n /** Visible text on the link. */\n linkText?: string;\n /** Url the link leads to */\n linkUrl?: string;\n /** Sets the target type of the link. _blank adds an arrow icon at the end of the link */\n linkTarget?: AnchorLinkTargets;\n /** Function is called when link is clicked */\n onLinkClick?: () => void;\n /** Function is called when user clicks the button */\n onClose?: () => void;\n /** aria-label to be passed onto Close */\n closeAriaLabel?: string;\n /** Resources for the component */\n resources?: Partial<HNDesignsystemHelpBubble>;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Ref that is passed to the component */\n ref?: React.Ref<HTMLDivElement | SVGSVGElement | null>;\n}\n\nconst HelpBubble: React.FC<HelpBubbleProps> = props => {\n const {\n ariaLabelledById,\n children,\n className = '',\n noCloseButton,\n linkText = 'Mer hjelp',\n linkUrl,\n linkTarget,\n onLinkClick,\n onClose,\n closeAriaLabel,\n // Props passed on to PopOver\n showBubble,\n helpBubbleId,\n variant,\n controllerRef,\n resources,\n testId,\n ref,\n } = props;\n\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n\n if (!showBubble) {\n return null;\n }\n\n const defaultResources = getResources(language);\n const mergedResources: HNDesignsystemHelpBubble = {\n ...defaultResources,\n ...resources,\n };\n\n const helpBubbleClasses = classNames(styles.helpbubble, className);\n const contentClasses = classNames(styles.helpbubble__content);\n\n const renderLink = (): React.ReactNode | undefined => {\n if (onLinkClick && linkText) {\n return (\n <button className={styles.helpbubble__link} onClick={onLinkClick} type=\"button\">\n {linkText}\n </button>\n );\n } else if (linkUrl && linkText) {\n return (\n <AnchorLink href={linkUrl} target={linkTarget}>\n {linkText}\n </AnchorLink>\n );\n }\n };\n\n const renderCloseButton = (): React.ReactNode | undefined => {\n if (noCloseButton) {\n return;\n }\n return <Close small color=\"plum\" onClick={onClose} ariaLabel={closeAriaLabel} className={styles.helpbubble__close} />;\n };\n\n return (\n <PopOver\n ariaLabel={mergedResources.ariaLabel}\n ariaLabelledById={ariaLabelledById}\n id={helpBubbleId}\n variant={variant}\n controllerRef={controllerRef}\n role=\"group\"\n ref={ref}\n show={showBubble}\n testId={testId}\n >\n <div className={helpBubbleClasses} data-analyticsid={AnalyticsId.HelpBubble}>\n <div className={contentClasses}>\n {children}\n {renderLink()}\n </div>\n {renderCloseButton()}\n </div>\n </PopOver>\n );\n};\n\nHelpBubble.displayName = 'HelpBubble';\n\nexport default HelpBubble;\n","import HelpBubble from './HelpBubble';\nexport * from './HelpBubble';\nexport default HelpBubble;\n"],"mappings":";;;;;;;;;ACKA,MAAa,gBAAgB,aAAwD;AACnF,SAAQ,UAAR;EACE,KAAK,gBAAgB;EACrB,QACE,QAAO;;;ACMb,MAAa,oBAAoB;AAuCjC,IAAMA,cAAwC,UAAS;CACrD,MAAM,EACJ,kBACA,UACA,YAAY,IACZ,eACA,WAAW,aACX,SACA,YACA,aACA,SACA,gBAEA,YACA,cACA,SACA,eACA,WACA,QACA,QACE;CAEJ,MAAM,EAAE,aAAa,YAA6B,gBAAgB,UAAU;AAE5E,KAAI,CAAC,WACH,QAAO;CAIT,MAAMC,kBAA4C;EAChD,GAFuB,aAAa,SAAS;EAG7C,GAAG;EACJ;CAED,MAAM,oBAAoB,WAAW,OAAO,YAAY,UAAU;CAClE,MAAM,iBAAiB,WAAW,OAAO,oBAAoB;CAE7D,MAAM,mBAAgD;AACpD,MAAI,eAAe,SACjB,QACE,oBAAC,UAAA;GAAO,WAAW,OAAO;GAAkB,SAAS;GAAa,MAAK;aACpE;IACM;WAEF,WAAW,SACpB,QACE,oBAAC,oBAAA;GAAW,MAAM;GAAS,QAAQ;aAChC;IACU;;CAKnB,MAAM,0BAAuD;AAC3D,MAAI,cACF;AAEF,SAAO,oBAAC,eAAA;GAAM,OAAA;GAAM,OAAM;GAAO,SAAS;GAAS,WAAW;GAAgB,WAAW,OAAO;IAAqB;;AAGvH,QACE,oBAAC,iBAAA;EACC,WAAW,gBAAgB;EACT;EAClB,IAAI;EACK;EACM;EACf,MAAK;EACA;EACL,MAAM;EACE;YAER,qBAAC,OAAA;GAAI,WAAW;GAAmB,oBAAkB,YAAY;cAC/D,qBAAC,OAAA;IAAI,WAAW;eACb,UACA,YAAY,CAAA;KACT,EACL,mBAAmB,CAAA;IAChB;GACE;;AAId,WAAW,cAAc;ACvIzB,IAAA,qBDyIe"}
1
+ {"version":3,"file":"index.js","names":["HelpBubble: React.FC<HelpBubbleProps>","mergedResources: HNDesignsystemHelpBubble"],"sources":["../../../src/resources/HN.Designsystem.HelpBubble.nb-NO.json","../../../src/components/HelpBubble/resourceHelper.ts","../../../src/components/HelpBubble/HelpBubble.tsx","../../../src/components/HelpBubble/index.ts"],"sourcesContent":["{\n \"ariaLabel\": \"Hjelpetekst\"\n}\n","import type { HNDesignsystemHelpBubble } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport nbNO from '../../resources/HN.Designsystem.HelpBubble.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemHelpBubble => {\n switch (language) {\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import classNames from 'classnames';\n\nimport type { HNDesignsystemHelpBubble } from '../../resources/Resources';\nimport type { AnchorLinkTargets } from '../AnchorLink';\nimport type { PopOverProps } from '../PopOver';\n\nimport { AnalyticsId, LanguageLocales } from '../../constants';\nimport { useLanguage } from '../../hooks/useLanguage';\nimport AnchorLink from '../AnchorLink';\nimport Close from '../Close';\nimport PopOver, { PopOverVariant } from '../PopOver';\nimport { getResources } from './resourceHelper';\n\nimport styles from './styles.module.scss';\n\nexport const HelpBubbleVariant = PopOverVariant;\n\nexport interface HelpBubbleProps extends Pick<PopOverProps, 'children' | 'variant' | 'controllerRef' | 'role'> {\n /** Sets aria-labelledby of the bubble. */\n ariaLabelledById?: string;\n /** Id of the HelpBubble */\n helpBubbleId?: string;\n /** Content shown inside HelpBubble. */\n children: React.ReactNode;\n /** Ref for the element the HelpBubble is placed upon */\n controllerRef: React.RefObject<HTMLElement | SVGSVGElement | null>;\n /** Adds custom classes to the element. */\n className?: string;\n /** Determines the placement of the helpbubble. Default: automatic positioning. */\n variant?: keyof typeof HelpBubbleVariant;\n /** Show the bubble. Default: false. */\n showBubble?: boolean;\n /** Hide the close button in the bubble. */\n noCloseButton?: boolean;\n /** Visible text on the link. */\n linkText?: string;\n /** Url the link leads to */\n linkUrl?: string;\n /** Sets the target type of the link. _blank adds an arrow icon at the end of the link */\n linkTarget?: AnchorLinkTargets;\n /** Function is called when link is clicked */\n onLinkClick?: () => void;\n /** Function is called when user clicks the button */\n onClose?: () => void;\n /** aria-label to be passed onto Close */\n closeAriaLabel?: string;\n /** Resources for the component */\n resources?: Partial<HNDesignsystemHelpBubble>;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Ref that is passed to the component */\n ref?: React.Ref<HTMLDivElement | SVGSVGElement | null>;\n}\n\nconst HelpBubble: React.FC<HelpBubbleProps> = props => {\n const {\n ariaLabelledById,\n children,\n className = '',\n noCloseButton,\n linkText = 'Mer hjelp',\n linkUrl,\n linkTarget,\n onLinkClick,\n onClose,\n closeAriaLabel,\n // Props passed on to PopOver\n showBubble,\n helpBubbleId,\n variant,\n controllerRef,\n resources,\n testId,\n ref,\n } = props;\n\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n\n if (!showBubble) {\n return null;\n }\n\n const defaultResources = getResources(language);\n const mergedResources: HNDesignsystemHelpBubble = {\n ...defaultResources,\n ...resources,\n };\n\n const helpBubbleClasses = classNames(styles.helpbubble, className);\n const contentClasses = classNames(styles.helpbubble__content);\n\n const renderLink = (): React.ReactNode | undefined => {\n if (onLinkClick && linkText) {\n return (\n <button className={styles.helpbubble__link} onClick={onLinkClick} type=\"button\">\n {linkText}\n </button>\n );\n } else if (linkUrl && linkText) {\n return (\n <AnchorLink href={linkUrl} target={linkTarget}>\n {linkText}\n </AnchorLink>\n );\n }\n };\n\n const renderCloseButton = (): React.ReactNode | undefined => {\n if (noCloseButton) {\n return;\n }\n return <Close small color=\"plum\" onClick={onClose} ariaLabel={closeAriaLabel} className={styles.helpbubble__close} />;\n };\n\n return (\n <PopOver\n ariaLabel={mergedResources.ariaLabel}\n ariaLabelledById={ariaLabelledById}\n id={helpBubbleId}\n variant={variant}\n controllerRef={controllerRef}\n role=\"group\"\n ref={ref}\n show={showBubble}\n testId={testId}\n >\n <div className={helpBubbleClasses} data-analyticsid={AnalyticsId.HelpBubble}>\n <div className={contentClasses}>\n {children}\n {renderLink()}\n </div>\n {renderCloseButton()}\n </div>\n </PopOver>\n );\n};\n\nHelpBubble.displayName = 'HelpBubble';\n\nexport default HelpBubble;\n","import HelpBubble from './HelpBubble';\nexport * from './HelpBubble';\nexport default HelpBubble;\n"],"mappings":";;;;;;;;;ACKA,MAAa,gBAAgB,aAAwD;AACnF,SAAQ,UAAR;EACE,KAAK,gBAAgB;EACrB,QACE,QAAO;;;ACMb,MAAa,oBAAoB;AAuCjC,IAAMA,cAAwC,UAAS;CACrD,MAAM,EACJ,kBACA,UACA,YAAY,IACZ,eACA,WAAW,aACX,SACA,YACA,aACA,SACA,gBAEA,YACA,cACA,SACA,eACA,WACA,QACA,QACE;CAEJ,MAAM,EAAE,aAAa,YAA6B,gBAAgB,UAAU;AAE5E,KAAI,CAAC,WACH,QAAO;CAIT,MAAMC,kBAA4C;EAChD,GAFuB,aAAa,SAAS;EAG7C,GAAG;EACJ;CAED,MAAM,oBAAoB,GAAW,OAAO,YAAY,UAAU;CAClE,MAAM,iBAAiB,GAAW,OAAO,oBAAoB;CAE7D,MAAM,mBAAgD;AACpD,MAAI,eAAe,SACjB,QACE,oBAAC,UAAA;GAAO,WAAW,OAAO;GAAkB,SAAS;GAAa,MAAK;aACpE;IACM;WAEF,WAAW,SACpB,QACE,oBAAC,oBAAA;GAAW,MAAM;GAAS,QAAQ;aAChC;IACU;;CAKnB,MAAM,0BAAuD;AAC3D,MAAI,cACF;AAEF,SAAO,oBAAC,eAAA;GAAM,OAAA;GAAM,OAAM;GAAO,SAAS;GAAS,WAAW;GAAgB,WAAW,OAAO;IAAqB;;AAGvH,QACE,oBAAC,iBAAA;EACC,WAAW,gBAAgB;EACT;EAClB,IAAI;EACK;EACM;EACf,MAAK;EACA;EACL,MAAM;EACE;YAER,qBAAC,OAAA;GAAI,WAAW;GAAmB,oBAAkB,YAAY;cAC/D,qBAAC,OAAA;IAAI,WAAW;eACb,UACA,YAAY,CAAA;KACT,EACL,mBAAmB,CAAA;IAChB;GACE;;AAId,WAAW,cAAc;ACvIzB,IAAA,qBDyIe"}
@@ -1,11 +1,11 @@
1
1
  import { t as HighlightPanel_default } from "../../HighlightPanel.js";
2
2
  import { t as HandWaving_default } from "../../HandWaving.js";
3
- import classNames from "classnames";
3
+ import cn from "classnames";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import styles from "./styles.module.scss";
6
6
  var HelpPanel = ({ className, variant = "normal", testId, children, title }) => {
7
7
  return /* @__PURE__ */ jsx(HighlightPanel_default, {
8
- className: classNames([styles["help-panel"]], className),
8
+ className: cn([styles["help-panel"]], className),
9
9
  testId,
10
10
  svgIcon: HandWaving_default,
11
11
  title,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["HelpPanel: React.FC<HelpPanelProps>"],"sources":["../../../src/components/HelpPanel/HelpPanel.tsx","../../../src/components/HelpPanel/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport HighlightPanel from '../HighlightPanel';\nimport HandWaving from '../Icons/HandWaving';\n\nimport styles from './styles.module.scss';\n\nexport type HelpPanelVariants = 'normal' | 'compact';\n\nexport interface HelpPanelProps {\n /** What's in the box? */\n children: React.ReactNode;\n /** If set the compact styling will be used */\n variant?: HelpPanelVariants;\n /** Adds custom classes to the element. */\n className?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Sets title if needed */\n title?: string;\n}\n\nconst HelpPanel: React.FC<HelpPanelProps> = ({ className, variant = 'normal', testId, children, title }) => {\n return (\n <HighlightPanel\n className={classNames([styles['help-panel']], className)}\n testId={testId}\n svgIcon={HandWaving}\n title={title}\n variant={variant}\n >\n {children}\n </HighlightPanel>\n );\n};\n\nexport default HelpPanel;\n","import HelpPanel from './HelpPanel';\nexport * from './HelpPanel';\nexport default HelpPanel;\n"],"mappings":";;;;;AAsBA,IAAMA,aAAuC,EAAE,WAAW,UAAU,UAAU,QAAQ,UAAU,YAAY;AAC1G,QACE,oBAAC,wBAAA;EACC,WAAW,WAAW,CAAC,OAAO,cAAc,EAAE,UAAU;EAChD;EACR,SAAS;EACF;EACE;EAER;GACc;;AC9BrB,IAAA,oBDkCe"}
1
+ {"version":3,"file":"index.js","names":["HelpPanel: React.FC<HelpPanelProps>"],"sources":["../../../src/components/HelpPanel/HelpPanel.tsx","../../../src/components/HelpPanel/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport HighlightPanel from '../HighlightPanel';\nimport HandWaving from '../Icons/HandWaving';\n\nimport styles from './styles.module.scss';\n\nexport type HelpPanelVariants = 'normal' | 'compact';\n\nexport interface HelpPanelProps {\n /** What's in the box? */\n children: React.ReactNode;\n /** If set the compact styling will be used */\n variant?: HelpPanelVariants;\n /** Adds custom classes to the element. */\n className?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Sets title if needed */\n title?: string;\n}\n\nconst HelpPanel: React.FC<HelpPanelProps> = ({ className, variant = 'normal', testId, children, title }) => {\n return (\n <HighlightPanel\n className={classNames([styles['help-panel']], className)}\n testId={testId}\n svgIcon={HandWaving}\n title={title}\n variant={variant}\n >\n {children}\n </HighlightPanel>\n );\n};\n\nexport default HelpPanel;\n","import HelpPanel from './HelpPanel';\nexport * from './HelpPanel';\nexport default HelpPanel;\n"],"mappings":";;;;;AAsBA,IAAMA,aAAuC,EAAE,WAAW,UAAU,UAAU,QAAQ,UAAU,YAAY;AAC1G,QACE,oBAAC,wBAAA;EACC,WAAW,GAAW,CAAC,OAAO,cAAc,EAAE,UAAU;EAChD;EACR,SAAS;EACF;EACE;EAER;GACc;;AC9BrB,IAAA,oBDkCe"}
@@ -3,7 +3,7 @@ import { t as usePseudoClasses } from "../../usePseudoClasses.js";
3
3
  import { n as mergeRefs, t as isMutableRefObject } from "../../refs.js";
4
4
  import { n as getAriaLabelAttributes } from "../../accessibility.js";
5
5
  import { n as HelpTriggerIconInternal } from "../../HelpTriggerIcon.js";
6
- import classNames from "classnames";
6
+ import cn from "classnames";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  import styles from "./styles.module.scss";
9
9
  var HelpTriggerInline = (props) => {
@@ -12,7 +12,7 @@ var HelpTriggerInline = (props) => {
12
12
  label: ariaLabel,
13
13
  id: ariaLabelledById
14
14
  });
15
- const helpTriggerInlineStyles = classNames(styles["help-trigger-inline"], className);
15
+ const helpTriggerInlineStyles = cn(styles["help-trigger-inline"], className);
16
16
  const { refObject, isHovered } = usePseudoClasses(isMutableRefObject(ref) ? ref : null);
17
17
  return /* @__PURE__ */ jsxs("button", {
18
18
  "aria-label": ariaLabel,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["HelpTriggerInline: React.FC<HelpTriggerInlineProps>"],"sources":["../../../src/components/HelpTriggerInline/HelpTriggerInline.tsx","../../../src/components/HelpTriggerInline/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { HelpTriggerWeights } from '../HelpTriggerIcon';\n\nimport { AnalyticsId } from '../../constants';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\nimport { getAriaLabelAttributes } from '../../utils/accessibility';\nimport { isMutableRefObject, mergeRefs } from '../../utils/refs';\nimport { HelpTriggerIconInternal } from '../HelpTriggerIcon';\n\nimport styles from './styles.module.scss';\n\nexport interface HelpTriggerInlineProps extends Pick<\n React.InputHTMLAttributes<HTMLButtonElement>,\n 'onClick' | 'aria-haspopup' | 'aria-controls' | 'aria-expanded'\n> {\n /**\n * Sets aria-label of the trigger. ariaLabel or ariaLabelledById MUST be set!\n */\n ariaLabel?: string;\n /**\n * Sets aria-labelledby of the trigger. ariaLabel or ariaLabelledById MUST be set!\n */\n ariaLabelledById?: string;\n /** Sets the text content of the HelpTriggerInline. */\n children: string;\n /**\n * Sets the colors of the help trigger. Default: normal.\n */\n weight?: HelpTriggerWeights;\n /**\n * Classname will be applied to the button element.\n */\n className?: string;\n /**\n * Optional test id.\n */\n testId?: string;\n /** Ref passed to the component */\n ref?: React.Ref<HTMLButtonElement | null>;\n}\n\nconst HelpTriggerInline: React.FC<HelpTriggerInlineProps> = props => {\n const { ariaLabel, ariaLabelledById, children, className, testId, weight = 'normal', ref, ...rest } = props;\n const ariaLabelAttributes = getAriaLabelAttributes({ label: ariaLabel, id: ariaLabelledById });\n const helpTriggerInlineStyles = classNames(styles['help-trigger-inline'], className);\n const { refObject, isHovered } = usePseudoClasses<HTMLButtonElement>(isMutableRefObject(ref) ? ref : null);\n\n return (\n <button\n aria-label={ariaLabel}\n type=\"button\"\n data-testid={testId}\n data-analyticsid={AnalyticsId.HelpTriggerInline}\n className={helpTriggerInlineStyles}\n ref={mergeRefs([refObject, ref])}\n {...ariaLabelAttributes}\n {...rest}\n >\n <span className={styles['help-trigger-inline__text']}>{children}</span>\n <HelpTriggerIconInternal weight={weight} size={'inherit'} htmlMarkup={'span'} isHovered={isHovered} />\n </button>\n );\n};\n\nHelpTriggerInline.displayName = 'HelpTriggerInline';\n\nexport default HelpTriggerInline;\n","import HelpTriggerInline from './HelpTriggerInline';\nexport * from './HelpTriggerInline';\nexport default HelpTriggerInline;\n"],"mappings":";;;;;;;;AA0CA,IAAMA,qBAAsD,UAAS;CACnE,MAAM,EAAE,WAAW,kBAAkB,UAAU,WAAW,QAAQ,SAAS,UAAU,KAAK,GAAG,SAAS;CACtG,MAAM,sBAAsB,uBAAuB;EAAE,OAAO;EAAW,IAAI;EAAkB,CAAC;CAC9F,MAAM,0BAA0B,WAAW,OAAO,wBAAwB,UAAU;CACpF,MAAM,EAAE,WAAW,cAAc,iBAAoC,mBAAmB,IAAI,GAAG,MAAM,KAAK;AAE1G,QACE,qBAAC,UAAA;EACC,cAAY;EACZ,MAAK;EACL,eAAa;EACb,oBAAkB,YAAY;EAC9B,WAAW;EACX,KAAK,UAAU,CAAC,WAAW,IAAI,CAAC;EAChC,GAAI;EACJ,GAAI;aAEJ,oBAAC,QAAA;GAAK,WAAW,OAAO;GAA+B;IAAgB,EACvE,oBAAC,yBAAA;GAAgC;GAAQ,MAAM;GAAW,YAAY;GAAmB;IAAa,CAAA;GAC/F;;AAIb,kBAAkB,cAAc;AC/DhC,IAAA,4BDiEe"}
1
+ {"version":3,"file":"index.js","names":["HelpTriggerInline: React.FC<HelpTriggerInlineProps>"],"sources":["../../../src/components/HelpTriggerInline/HelpTriggerInline.tsx","../../../src/components/HelpTriggerInline/index.ts"],"sourcesContent":["import classNames from 'classnames';\n\nimport type { HelpTriggerWeights } from '../HelpTriggerIcon';\n\nimport { AnalyticsId } from '../../constants';\nimport { usePseudoClasses } from '../../hooks/usePseudoClasses';\nimport { getAriaLabelAttributes } from '../../utils/accessibility';\nimport { isMutableRefObject, mergeRefs } from '../../utils/refs';\nimport { HelpTriggerIconInternal } from '../HelpTriggerIcon';\n\nimport styles from './styles.module.scss';\n\nexport interface HelpTriggerInlineProps extends Pick<\n React.InputHTMLAttributes<HTMLButtonElement>,\n 'onClick' | 'aria-haspopup' | 'aria-controls' | 'aria-expanded'\n> {\n /**\n * Sets aria-label of the trigger. ariaLabel or ariaLabelledById MUST be set!\n */\n ariaLabel?: string;\n /**\n * Sets aria-labelledby of the trigger. ariaLabel or ariaLabelledById MUST be set!\n */\n ariaLabelledById?: string;\n /** Sets the text content of the HelpTriggerInline. */\n children: string;\n /**\n * Sets the colors of the help trigger. Default: normal.\n */\n weight?: HelpTriggerWeights;\n /**\n * Classname will be applied to the button element.\n */\n className?: string;\n /**\n * Optional test id.\n */\n testId?: string;\n /** Ref passed to the component */\n ref?: React.Ref<HTMLButtonElement | null>;\n}\n\nconst HelpTriggerInline: React.FC<HelpTriggerInlineProps> = props => {\n const { ariaLabel, ariaLabelledById, children, className, testId, weight = 'normal', ref, ...rest } = props;\n const ariaLabelAttributes = getAriaLabelAttributes({ label: ariaLabel, id: ariaLabelledById });\n const helpTriggerInlineStyles = classNames(styles['help-trigger-inline'], className);\n const { refObject, isHovered } = usePseudoClasses<HTMLButtonElement>(isMutableRefObject(ref) ? ref : null);\n\n return (\n <button\n aria-label={ariaLabel}\n type=\"button\"\n data-testid={testId}\n data-analyticsid={AnalyticsId.HelpTriggerInline}\n className={helpTriggerInlineStyles}\n ref={mergeRefs([refObject, ref])}\n {...ariaLabelAttributes}\n {...rest}\n >\n <span className={styles['help-trigger-inline__text']}>{children}</span>\n <HelpTriggerIconInternal weight={weight} size={'inherit'} htmlMarkup={'span'} isHovered={isHovered} />\n </button>\n );\n};\n\nHelpTriggerInline.displayName = 'HelpTriggerInline';\n\nexport default HelpTriggerInline;\n","import HelpTriggerInline from './HelpTriggerInline';\nexport * from './HelpTriggerInline';\nexport default HelpTriggerInline;\n"],"mappings":";;;;;;;;AA0CA,IAAMA,qBAAsD,UAAS;CACnE,MAAM,EAAE,WAAW,kBAAkB,UAAU,WAAW,QAAQ,SAAS,UAAU,KAAK,GAAG,SAAS;CACtG,MAAM,sBAAsB,uBAAuB;EAAE,OAAO;EAAW,IAAI;EAAkB,CAAC;CAC9F,MAAM,0BAA0B,GAAW,OAAO,wBAAwB,UAAU;CACpF,MAAM,EAAE,WAAW,cAAc,iBAAoC,mBAAmB,IAAI,GAAG,MAAM,KAAK;AAE1G,QACE,qBAAC,UAAA;EACC,cAAY;EACZ,MAAK;EACL,eAAa;EACb,oBAAkB,YAAY;EAC9B,WAAW;EACX,KAAK,UAAU,CAAC,WAAW,IAAI,CAAC;EAChC,GAAI;EACJ,GAAI;aAEJ,oBAAC,QAAA;GAAK,WAAW,OAAO;GAA+B;IAAgB,EACvE,oBAAC,yBAAA;GAAgC;GAAQ,MAAM;GAAW,YAAY;GAAmB;IAAa,CAAA;GAC/F;;AAIb,kBAAkB,cAAc;AC/DhC,IAAA,4BDiEe"}
@@ -1,44 +1,2 @@
1
- import { t as getIcon } from "../../utils.js";
2
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
- var Filter = ({ size, isHovered }) => {
4
- return getIcon({
5
- size,
6
- isHovered,
7
- normal: /* @__PURE__ */ jsx("path", {
8
- "fill-rule": "evenodd",
9
- "clip-rule": "evenodd",
10
- d: "M21.034 30.338a4 4 0 0 1 3.926 3.234H41v1.3H24.998a4 4 0 0 1-7.94-.1H7v-1.2h10.108a4 4 0 0 1 3.926-3.234Zm0 1.3a2.7 2.7 0 1 0 .001 5.4 2.7 2.7 0 0 0 0-5.4ZM32.697 20a4 4 0 0 1 3.936 3.286H41v1.3h-4.346a4 4 0 0 1-7.914 0H7v-1.3h21.762A4 4 0 0 1 32.697 20Zm0 1.3a2.7 2.7 0 1 0 0 5.4 2.7 2.7 0 0 0 0-5.4ZM16.571 9.726A4 4 0 0 1 20.505 13H41v1.3H20.53a4 4 0 0 1-7.917 0H7V13h5.638a4 4 0 0 1 3.933-3.274Zm0 1.3a2.7 2.7 0 1 0 0 5.4 2.7 2.7 0 0 0 0-5.4Z"
11
- }),
12
- normalHover: /* @__PURE__ */ jsxs(Fragment, { children: [
13
- /* @__PURE__ */ jsx("path", {
14
- "fill-rule": "evenodd",
15
- "clip-rule": "evenodd",
16
- d: "M17.0332 30.3389C18.9803 30.3389 20.6015 31.7297 20.959 33.5723H40.999V34.8721H20.9971C20.7361 36.8288 19.0613 38.3389 17.0332 38.3389C15.0051 38.3389 13.3303 36.8288 13.0693 34.8721H6.99902V33.5723H13.1074C13.4649 31.7297 15.0861 30.3389 17.0332 30.3389ZM17.0332 31.6387C15.542 31.6387 14.333 32.8477 14.333 34.3389C14.3333 35.8298 15.5422 37.0391 17.0332 37.0391C18.5242 37.0391 19.7331 35.8298 19.7334 34.3389C19.7334 32.8477 18.5244 31.6387 17.0332 31.6387Z"
17
- }),
18
- /* @__PURE__ */ jsx("path", {
19
- "fill-rule": "evenodd",
20
- "clip-rule": "evenodd",
21
- d: "M32.6963 20C34.6617 20 36.2952 21.4177 36.6318 23.2861H40.999V24.5859H36.6533C36.3698 26.5173 34.7064 28 32.6963 28C30.6862 28 29.0228 26.5173 28.7393 24.5859H6.99902V23.2861H28.7607C29.0974 21.4177 30.7309 20 32.6963 20ZM32.6963 21.2998C31.2051 21.2998 29.9961 22.5088 29.9961 24C29.9961 25.4912 31.2051 26.7002 32.6963 26.7002C34.1875 26.7002 35.3965 25.4912 35.3965 24C35.3965 22.5088 34.1875 21.2998 32.6963 21.2998Z"
22
- }),
23
- /* @__PURE__ */ jsx("path", {
24
- "fill-rule": "evenodd",
25
- "clip-rule": "evenodd",
26
- d: "M19.5703 9.72461C21.5318 9.72461 23.1627 11.1371 23.5039 13H40.999V14.2998H23.5283C23.2496 16.2366 21.5843 17.7256 19.5703 17.7256C17.5564 17.7256 15.891 16.2366 15.6123 14.2998H6.99902V13H15.6367C15.9779 11.1371 17.6088 9.72461 19.5703 9.72461ZM19.5703 11.0254C18.0791 11.0254 16.8701 12.2344 16.8701 13.7256C16.8704 15.2165 18.0793 16.4258 19.5703 16.4258C21.0613 16.4258 22.2702 15.2165 22.2705 13.7256C22.2705 12.2344 21.0615 11.0254 19.5703 11.0254Z"
27
- })
28
- ] }),
29
- xSmall: /* @__PURE__ */ jsx("path", {
30
- "fill-rule": "evenodd",
31
- "clip-rule": "evenodd",
32
- d: "M22.111 27.892a2.974 2.974 0 0 1 2.905 2.342h11.935v1.264H25.015a2.973 2.973 0 0 1-2.904 2.34l-.303-.015a2.973 2.973 0 0 1-2.6-2.325H11.68v-1.264h7.529a2.973 2.973 0 0 1 2.903-2.342Zm0 1.263a1.71 1.71 0 1 0 .001 3.42 1.71 1.71 0 0 0 0-3.42Zm8.669-8.229a2.974 2.974 0 0 1 2.904 2.343h3.267v1.263h-3.268a2.973 2.973 0 0 1-2.904 2.341l-.303-.016a2.973 2.973 0 0 1-2.599-2.325H11.679v-1.263h16.197a2.973 2.973 0 0 1 2.903-2.343Zm0 1.263a1.71 1.71 0 1 0 0 3.421 1.71 1.71 0 0 0 0-3.42Zm-11.987-8.295a2.974 2.974 0 0 1 2.905 2.34h15.253v1.264H21.697a2.973 2.973 0 0 1-2.904 2.342l-.303-.015a2.973 2.973 0 0 1-2.6-2.327h-4.21v-1.263h4.21a2.973 2.973 0 0 1 2.903-2.341Zm0 1.263a1.71 1.71 0 1 0 .001 3.42 1.71 1.71 0 0 0 0-3.42Z"
33
- }),
34
- xSmallHover: /* @__PURE__ */ jsx("path", {
35
- "fill-rule": "evenodd",
36
- "clip-rule": "evenodd",
37
- d: "M19.585 27.892a2.975 2.975 0 0 1 2.906 2.342h14.46v1.264H22.489a2.973 2.973 0 0 1-2.904 2.34l-.303-.015a2.974 2.974 0 0 1-2.6-2.327h-5.003v-1.263h5.001a2.974 2.974 0 0 1 2.905-2.341Zm0 1.263a1.71 1.71 0 1 0 0 3.42 1.71 1.71 0 0 0 0-3.42Zm11.195-8.229a2.974 2.974 0 0 1 2.904 2.343h3.267v1.263h-3.268a2.973 2.973 0 0 1-2.904 2.341l-.303-.016a2.973 2.973 0 0 1-2.599-2.325H11.679v-1.263h16.197a2.973 2.973 0 0 1 2.903-2.343Zm0 1.263a1.71 1.71 0 1 0 0 3.421 1.71 1.71 0 0 0 0-3.42Zm-9.46-8.295a2.974 2.974 0 0 1 2.904 2.34h12.727v1.264H24.223a2.973 2.973 0 0 1-2.904 2.342l-.303-.015a2.973 2.973 0 0 1-2.6-2.327H11.68v-1.263h6.737a2.973 2.973 0 0 1 2.903-2.341Zm0 1.263a1.71 1.71 0 1 0 0 3.42 1.71 1.71 0 0 0 0-3.42Z"
38
- })
39
- });
40
- };
41
- var Filter_default = Filter;
1
+ import { t as Filter_default } from "../../Filter.js";
42
2
  export { Filter_default as default };
43
-
44
- //# sourceMappingURL=Filter.js.map
@@ -1,26 +1,2 @@
1
- import { t as getIcon } from "../../utils.js";
2
- import { jsx } from "react/jsx-runtime";
3
- var Search = ({ size, isHovered }) => {
4
- return getIcon({
5
- size,
6
- isHovered,
7
- normal: /* @__PURE__ */ jsx("path", { d: "M21.277 7.738c7.27 0 13.165 5.895 13.165 13.166 0 2.222-.55 4.316-1.523 6.153l6.268 6.268a3.929 3.929 0 01-5.41 5.695l-.146-.139-6.289-6.289a13.11 13.11 0 01-6.065 1.478c-7.272 0-13.166-5.895-13.166-13.166 0-7.271 5.894-13.166 13.166-13.166zM32 28.542a13.24 13.24 0 01-3.164 3.142l5.996 5.995a2.229 2.229 0 003.26-3.036l-.108-.116zM21.277 9.438c-6.333 0-11.466 5.133-11.466 11.466 0 6.332 5.133 11.466 11.466 11.466 2.258 0 4.365-.654 6.14-1.781l.163-.163.034.035a11.529 11.529 0 003.165-3.14l-.047-.048.228-.226a11.412 11.412 0 001.782-6.143c0-6.333-5.133-11.466-11.465-11.466z" }),
8
- normalHover: /* @__PURE__ */ jsx("path", { d: "M21.527 6.932c7.932 0 14.363 6.43 14.363 14.362 0 2.556-.668 4.956-1.838 7.035l5.386 5.386a3.929 3.929 0 01-5.41 5.696l-.146-.14-5.406-5.404a14.298 14.298 0 01-6.949 1.79c-7.932 0-14.362-6.43-14.362-14.363 0-7.932 6.43-14.362 14.362-14.362zM33.11 29.79a14.445 14.445 0 01-3.162 3.141l5.137 5.138a2.229 2.229 0 003.26-3.035l-.108-.117zM21.527 8.632c-6.993 0-12.662 5.669-12.662 12.662 0 6.993 5.669 12.663 12.662 12.663 6.993 0 12.663-5.67 12.663-12.663S28.52 8.632 21.527 8.632z" }),
9
- xSmall: /* @__PURE__ */ jsx("path", { d: "M34.476 34.206c-.486.487-1.333.487-1.82 0l-4.402-4.403a10.426 10.426 0 001.78-1.857l4.442 4.44c.243.243.376.567.376.91 0 .345-.133.668-.376.91M21.742 30.07c-4.592 0-8.327-3.737-8.327-8.327 0-4.592 3.735-8.327 8.327-8.327 4.591 0 8.327 3.735 8.327 8.327 0 4.59-3.736 8.327-8.327 8.327m14.181.871l-4.8-4.8c.63-1.338.991-2.825.991-4.398 0-5.72-4.653-10.374-10.372-10.374-5.72 0-10.374 4.653-10.374 10.374 0 5.72 4.653 10.372 10.374 10.372 1.717 0 3.333-.426 4.76-1.168l4.708 4.708a3.312 3.312 0 002.357.976c.89 0 1.727-.348 2.356-.976a3.339 3.339 0 000-4.714" }),
10
- xSmallHover: /* @__PURE__ */ jsx("path", { d: "M34.7 34.43c-.486.485-1.338.487-1.823 0l-3.388-3.39c.663-.55 1.255-1.18 1.785-1.859l3.426 3.424c.244.242.377.567.377.911 0 .346-.133.669-.377.914m-12.76-2.994c-5.238 0-9.5-4.26-9.5-9.499 0-5.238 4.262-9.499 9.5-9.499 5.237 0 9.498 4.261 9.498 9.5 0 5.237-4.26 9.498-9.499 9.498m14.21-.28l-3.734-3.736a11.744 11.744 0 001.356-5.483c0-6.524-5.31-11.832-11.832-11.832-6.524 0-11.834 5.308-11.834 11.832 0 6.525 5.31 11.834 11.834 11.834 2.12 0 4.108-.57 5.831-1.55l3.656 3.658c.633.63 1.47.979 2.362.979.893 0 1.732-.348 2.36-.98.632-.63.98-1.467.98-2.362 0-.89-.348-1.73-.98-2.36" }),
11
- xxSmall: /* @__PURE__ */ jsx("path", {
12
- "fill-rule": "evenodd",
13
- "clip-rule": "evenodd",
14
- d: "M20.1738 6.88672C27.4533 6.88672 33.3765 12.8075 33.377 20.0879C33.377 22.0407 32.934 23.8871 32.1699 25.5547L38.0918 31.4785C39.7973 33.1852 39.7973 35.9613 38.0918 37.668C37.2652 38.4933 36.1671 38.9509 34.998 38.9512C33.8287 38.9512 32.7281 38.4937 31.9023 37.668L26.1016 31.8672C24.3175 32.7694 22.3071 33.291 20.1738 33.291C12.8934 33.2906 6.97266 27.3673 6.97266 20.0879C6.97311 12.8077 12.8937 6.88717 20.1738 6.88672ZM33.9766 35.8223C34.0595 35.8891 34.1486 35.9464 34.2422 35.9941L34.1055 35.9141C34.0613 35.8856 34.0179 35.8555 33.9766 35.8223ZM30.5879 28.166C30.0088 28.9128 29.3558 29.5973 28.6309 30.2051L34 35.5742C34.5316 36.105 35.4668 36.1054 35.998 35.5742C36.2647 35.3076 36.4102 34.9522 36.4102 34.5742C36.4099 34.1967 36.264 33.8424 35.998 33.5762L30.5879 28.166ZM12.3984 30.5039C12.4725 30.5593 12.5498 30.6102 12.625 30.6641C12.3803 30.4889 12.1399 30.3085 11.9082 30.1172L12.3984 30.5039ZM20.1758 9.85156C14.5314 9.85197 9.93993 14.4435 9.93945 20.0879C9.93945 25.7316 14.5311 30.3258 20.1758 30.3262C25.8208 30.3262 30.4141 25.7318 30.4141 20.0879C30.4136 14.4432 25.8205 9.85156 20.1758 9.85156ZM24.2363 29.7051C24.392 29.6391 24.5456 29.5693 24.6973 29.4961C24.3933 29.6428 24.0811 29.7753 23.7617 29.8926L24.2363 29.7051ZM30.4199 18.0801C30.5472 18.7301 30.6152 19.4012 30.6152 20.0879L30.6016 19.5527C30.5761 19.0518 30.5139 18.5601 30.4199 18.0801ZM30.5898 12.3145C30.6024 12.3312 30.6145 12.3484 30.627 12.3652C30.4902 12.1806 30.3492 11.9993 30.2031 11.8223L30.5898 12.3145ZM23.2754 10.1211C24.0922 10.3756 24.8663 10.7276 25.584 11.1641L25.1484 10.9121C24.5564 10.59 23.9293 10.3248 23.2754 10.1211Z"
15
- }),
16
- xxSmallHover: /* @__PURE__ */ jsx("path", {
17
- "fill-rule": "evenodd",
18
- "clip-rule": "evenodd",
19
- d: "M20.0664 5.13281C28.324 5.13306 35.0464 11.8511 35.0469 20.1113C35.0469 22.5634 34.442 24.8729 33.3926 26.918L37.957 31.4863C38.7823 32.3116 39.2383 33.4111 39.2383 34.5762C39.2382 35.7464 38.7821 36.8427 37.957 37.668C37.1342 38.4934 36.0347 38.9492 34.8672 38.9492C33.6999 38.9491 32.6029 38.4943 31.7754 37.6699L27.3105 33.2031C25.1607 34.3979 22.6954 35.0956 20.0664 35.0957C11.806 35.0954 5.08398 28.3719 5.08398 20.1113C5.08443 11.8511 11.8063 5.13314 20.0664 5.13281ZM31.7402 29.459C31.1525 30.1928 30.5023 30.8761 29.7871 31.4902L33.8711 35.5762C34.3983 36.1051 35.3349 36.1032 35.8633 35.5762C36.1311 35.3083 36.2772 34.9554 36.2773 34.5762C36.2773 34.1993 36.132 33.8448 35.8652 33.5801L31.7402 29.459ZM26.5273 33.3926C25.4214 33.9344 24.2397 34.3442 23.002 34.5977C23.3028 34.5361 23.6006 34.4664 23.8945 34.3867C25.1149 34.0558 26.2734 33.5714 27.3496 32.959C27.0807 33.112 26.8062 33.256 26.5273 33.3926ZM38.0957 31.9355C38.3575 32.2543 38.5693 32.6057 38.7246 32.9805C38.5174 32.4804 38.2105 32.0211 37.8164 31.627L38.0957 31.9355ZM20.0664 8.44531C13.6343 8.44564 8.40039 13.6791 8.40039 20.1113C8.40058 26.5434 13.6344 31.777 20.0664 31.7773C26.4984 31.777 31.7322 26.5434 31.7324 20.1113C31.7324 13.6791 26.4985 8.44568 20.0664 8.44531ZM17.6777 8.48633C16.327 8.76346 15.0598 9.27215 13.918 9.9668C14.7339 9.47055 15.6142 9.07065 16.543 8.78125C16.9139 8.66566 17.2923 8.56542 17.6777 8.48633ZM22.4551 8.48828C22.6482 8.52791 22.8397 8.57217 23.0293 8.62109C22.6501 8.52325 22.2639 8.443 21.8711 8.38281L22.4551 8.48828ZM20.0664 8.24609C19.6577 8.24609 19.2537 8.2661 18.8555 8.30664L19.457 8.26172C19.6589 8.25145 19.862 8.2461 20.0664 8.24609Z"
20
- })
21
- });
22
- };
23
- var Search_default = Search;
1
+ import { t as Search_default } from "../../Search.js";
24
2
  export { Search_default as default };
25
-
26
- //# sourceMappingURL=Search.js.map
@@ -7,6 +7,7 @@ interface RenderLabelProps {
7
7
  inputId: string;
8
8
  onColor: FormOnColor;
9
9
  markup?: LabelTags;
10
+ className?: string;
10
11
  }
11
12
  export declare const renderLabel: (props: RenderLabelProps) => React.ReactNode;
12
13
  interface RenderLabelAsParentProps {
@@ -1,6 +1,6 @@
1
1
  import { t as uuid } from "../../uuid.js";
2
2
  import { c as ZIndex, n as AnalyticsId } from "../../constants2.js";
3
- import classNames from "classnames";
3
+ import cn from "classnames";
4
4
  import { useCallback, useRef, useState } from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  import loaderStyles from "./styles.module.scss";
@@ -21,19 +21,19 @@ var Loader = (props) => {
21
21
  const isSmall = size === "small";
22
22
  const isMedium = size === "medium";
23
23
  const isLarge = size === "large";
24
- const loaderWrapperClasses = classNames({
24
+ const loaderWrapperClasses = cn({
25
25
  [loaderStyles["loader-wrapper--center"]]: center,
26
26
  [loaderStyles["loader-wrapper--overlay"]]: overlay,
27
27
  [loaderStyles["loader-wrapper--overlay-screen"]]: overlay === Overlay.screen,
28
28
  [loaderStyles["loader-wrapper--overlay-parent"]]: overlay === Overlay.parent && display,
29
29
  [loaderStyles["loader-wrapper--inline"]]: inline && display
30
30
  });
31
- const loaderClasses = classNames(loaderStyles.loader, {
31
+ const loaderClasses = cn(loaderStyles.loader, {
32
32
  [loaderStyles["loader--small"]]: isSmall,
33
33
  [loaderStyles["loader--medium"]]: isMedium,
34
34
  [loaderStyles["loader--large"]]: isLarge
35
35
  }, className);
36
- const loaderDotClasses = classNames(loaderStyles.loader__dot, {
36
+ const loaderDotClasses = cn(loaderStyles.loader__dot, {
37
37
  [loaderStyles["loader__dot--small"]]: isSmall,
38
38
  [loaderStyles["loader__dot--medium"]]: isMedium,
39
39
  [loaderStyles["loader__dot--large"]]: isLarge,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Loader: React.FC<LoaderProps>"],"sources":["../../../src/components/Loader/constants.ts","../../../src/components/Loader/Loader.tsx","../../../src/components/Loader/index.ts"],"sourcesContent":["export enum Overlay {\n screen = 'screen',\n parent = 'parent',\n}\n","import { useCallback, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { PaletteNames } from '../../theme/palette';\n\nimport { Overlay } from './constants';\nimport { AnalyticsId, ZIndex } from '../../constants';\nimport { uuid } from '../../utils/uuid';\n\nimport loaderStyles from './styles.module.scss';\n\nexport type LoaderColors = PaletteNames;\nexport type LoaderSizes = 'tiny' | 'small' | 'medium' | 'large';\n\nexport interface LoaderProps {\n /** Sets the color of the loader. If overlay is used, the color will always be white. */\n color?: LoaderColors;\n /**\tAdds custom classes to the element. */\n className?: string;\n /** Changes the size of the loader. */\n size?: LoaderSizes;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** id of the label */\n labelId?: string;\n /** Centers the loader in a container */\n center?: boolean;\n /** Inline the loader so it can be used in a span or paragraph */\n inline?: boolean;\n /** Loader is displayed with grey background covering the entire screen */\n overlay?: keyof typeof Overlay;\n /** Individual id for loading icon (aria-labelledby). */\n ariaLabelledById?: string;\n /** String that labels the current loading element */\n ariaLabel?: string;\n}\n\nconst Loader: React.FC<LoaderProps> = props => {\n const {\n overlay,\n size = 'small',\n className = '',\n labelId = uuid(),\n testId,\n center,\n inline,\n ariaLabelledById,\n ariaLabel = 'Laster inn',\n } = props;\n const color = props.overlay ? 'white' : props.color || 'neutral';\n\n const showLoader = (): boolean => {\n if (overlay === Overlay.parent || inline) {\n return false;\n }\n\n return true;\n };\n\n const [display, setDisplay] = useState(showLoader());\n const hasInitializedRef = useRef(false);\n\n const isSmall = size === 'small';\n const isMedium = size === 'medium';\n const isLarge = size === 'large';\n\n const loaderWrapperClasses = classNames({\n [loaderStyles['loader-wrapper--center']]: center,\n [loaderStyles['loader-wrapper--overlay']]: overlay,\n [loaderStyles['loader-wrapper--overlay-screen']]: overlay === Overlay.screen,\n [loaderStyles['loader-wrapper--overlay-parent']]: overlay === Overlay.parent && display,\n [loaderStyles['loader-wrapper--inline']]: inline && display,\n });\n const loaderClasses = classNames(\n loaderStyles.loader,\n {\n [loaderStyles['loader--small']]: isSmall,\n [loaderStyles['loader--medium']]: isMedium,\n [loaderStyles['loader--large']]: isLarge,\n },\n className\n );\n const loaderDotClasses = classNames(loaderStyles.loader__dot, {\n [loaderStyles['loader__dot--small']]: isSmall,\n [loaderStyles['loader__dot--medium']]: isMedium,\n [loaderStyles['loader__dot--large']]: isLarge,\n [loaderStyles['loader__dot--banana']]: color === 'banana',\n [loaderStyles['loader__dot--cherry']]: color === 'cherry',\n [loaderStyles['loader__dot--kiwi']]: color === 'kiwi',\n [loaderStyles['loader__dot--neutral']]: color === 'neutral',\n [loaderStyles['loader__dot--plum']]: color === 'plum',\n [loaderStyles['loader__dot--black']]: color === 'black',\n [loaderStyles['loader__dot--white']]: color === 'white',\n });\n\n const wrapperRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node && !hasInitializedRef.current) {\n hasInitializedRef.current = true;\n if (overlay === Overlay.parent && node.parentElement?.style) {\n node.parentElement.style.position = 'relative';\n setDisplay(true);\n }\n if (inline && node.parentElement?.style) {\n node.parentElement.style.display = 'flex';\n setDisplay(true);\n }\n }\n },\n [overlay, inline]\n );\n\n return (\n <div className={loaderWrapperClasses} ref={wrapperRef} style={overlay === Overlay.screen ? { zIndex: ZIndex.OverlayScreen } : {}}>\n {display && (\n <div\n data-testid={testId}\n data-analyticsid={AnalyticsId.Loader}\n role=\"progressbar\"\n aria-labelledby={ariaLabelledById || labelId}\n className={loaderClasses}\n >\n <div className={loaderDotClasses} />\n <div className={loaderDotClasses} />\n <div className={loaderDotClasses} />\n <div className={loaderDotClasses} />\n {!ariaLabelledById && (\n <span id={labelId} className={loaderStyles['loader__hidden-text']}>\n {ariaLabel}\n </span>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default Loader;\n","import Loader from './Loader';\nexport { Overlay } from './constants';\nexport * from './Loader';\nexport default Loader;\n"],"mappings":";;;;;;AAAA,IAAY,UAAA,yBAAA,WAAL;AACL,WAAA,YAAA;AACA,WAAA,YAAA;;;ACoCF,IAAMA,UAAgC,UAAS;CAC7C,MAAM,EACJ,SACA,OAAO,SACP,YAAY,IACZ,UAAU,MAAM,EAChB,QACA,QACA,QACA,kBACA,YAAY,iBACV;CACJ,MAAM,QAAQ,MAAM,UAAU,UAAU,MAAM,SAAS;CAEvD,MAAM,mBAA4B;AAChC,MAAI,YAAY,QAAQ,UAAU,OAChC,QAAO;AAGT,SAAO;;CAGT,MAAM,CAAC,SAAS,cAAc,SAAS,YAAY,CAAC;CACpD,MAAM,oBAAoB,OAAO,MAAM;CAEvC,MAAM,UAAU,SAAS;CACzB,MAAM,WAAW,SAAS;CAC1B,MAAM,UAAU,SAAS;CAEzB,MAAM,uBAAuB,WAAW;GACrC,aAAa,4BAA4B;GACzC,aAAa,6BAA6B;GAC1C,aAAa,oCAAoC,YAAY,QAAQ;GACrE,aAAa,oCAAoC,YAAY,QAAQ,UAAU;GAC/E,aAAa,4BAA4B,UAAU;EACrD,CAAC;CACF,MAAM,gBAAgB,WACpB,aAAa,QACb;GACG,aAAa,mBAAmB;GAChC,aAAa,oBAAoB;GACjC,aAAa,mBAAmB;EAClC,EACD,UACD;CACD,MAAM,mBAAmB,WAAW,aAAa,aAAa;GAC3D,aAAa,wBAAwB;GACrC,aAAa,yBAAyB;GACtC,aAAa,wBAAwB;GACrC,aAAa,yBAAyB,UAAU;GAChD,aAAa,yBAAyB,UAAU;GAChD,aAAa,uBAAuB,UAAU;GAC9C,aAAa,0BAA0B,UAAU;GACjD,aAAa,uBAAuB,UAAU;GAC9C,aAAa,wBAAwB,UAAU;GAC/C,aAAa,wBAAwB,UAAU;EACjD,CAAC;AAmBF,QACE,oBAAC,OAAA;EAAI,WAAW;EAAsB,KAlBrB,aAChB,SAAgC;AAC/B,OAAI,QAAQ,CAAC,kBAAkB,SAAS;AACtC,sBAAkB,UAAU;AAC5B,QAAI,YAAY,QAAQ,UAAU,KAAK,eAAe,OAAO;AAC3D,UAAK,cAAc,MAAM,WAAW;AACpC,gBAAW,KAAK;;AAElB,QAAI,UAAU,KAAK,eAAe,OAAO;AACvC,UAAK,cAAc,MAAM,UAAU;AACnC,gBAAW,KAAK;;;KAItB,CAAC,SAAS,OAAO,CAClB;EAGwD,OAAO,YAAY,QAAQ,SAAS,EAAE,QAAQ,OAAO,eAAe,GAAG,EAAE;YAC7H,WACC,qBAAC,OAAA;GACC,eAAa;GACb,oBAAkB,YAAY;GAC9B,MAAK;GACL,mBAAiB,oBAAoB;GACrC,WAAW;;IAEX,oBAAC,OAAA,EAAI,WAAW,kBAAA,CAAoB;IACpC,oBAAC,OAAA,EAAI,WAAW,kBAAA,CAAoB;IACpC,oBAAC,OAAA,EAAI,WAAW,kBAAA,CAAoB;IACpC,oBAAC,OAAA,EAAI,WAAW,kBAAA,CAAoB;IACnC,CAAC,oBACA,oBAAC,QAAA;KAAK,IAAI;KAAS,WAAW,aAAa;eACxC;MACI;;IAEL;GAEJ;;ACnIV,IAAA,iBDuIe"}
1
+ {"version":3,"file":"index.js","names":["Loader: React.FC<LoaderProps>"],"sources":["../../../src/components/Loader/constants.ts","../../../src/components/Loader/Loader.tsx","../../../src/components/Loader/index.ts"],"sourcesContent":["export enum Overlay {\n screen = 'screen',\n parent = 'parent',\n}\n","import { useCallback, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { PaletteNames } from '../../theme/palette';\n\nimport { Overlay } from './constants';\nimport { AnalyticsId, ZIndex } from '../../constants';\nimport { uuid } from '../../utils/uuid';\n\nimport loaderStyles from './styles.module.scss';\n\nexport type LoaderColors = PaletteNames;\nexport type LoaderSizes = 'tiny' | 'small' | 'medium' | 'large';\n\nexport interface LoaderProps {\n /** Sets the color of the loader. If overlay is used, the color will always be white. */\n color?: LoaderColors;\n /**\tAdds custom classes to the element. */\n className?: string;\n /** Changes the size of the loader. */\n size?: LoaderSizes;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** id of the label */\n labelId?: string;\n /** Centers the loader in a container */\n center?: boolean;\n /** Inline the loader so it can be used in a span or paragraph */\n inline?: boolean;\n /** Loader is displayed with grey background covering the entire screen */\n overlay?: keyof typeof Overlay;\n /** Individual id for loading icon (aria-labelledby). */\n ariaLabelledById?: string;\n /** String that labels the current loading element */\n ariaLabel?: string;\n}\n\nconst Loader: React.FC<LoaderProps> = props => {\n const {\n overlay,\n size = 'small',\n className = '',\n labelId = uuid(),\n testId,\n center,\n inline,\n ariaLabelledById,\n ariaLabel = 'Laster inn',\n } = props;\n const color = props.overlay ? 'white' : props.color || 'neutral';\n\n const showLoader = (): boolean => {\n if (overlay === Overlay.parent || inline) {\n return false;\n }\n\n return true;\n };\n\n const [display, setDisplay] = useState(showLoader());\n const hasInitializedRef = useRef(false);\n\n const isSmall = size === 'small';\n const isMedium = size === 'medium';\n const isLarge = size === 'large';\n\n const loaderWrapperClasses = classNames({\n [loaderStyles['loader-wrapper--center']]: center,\n [loaderStyles['loader-wrapper--overlay']]: overlay,\n [loaderStyles['loader-wrapper--overlay-screen']]: overlay === Overlay.screen,\n [loaderStyles['loader-wrapper--overlay-parent']]: overlay === Overlay.parent && display,\n [loaderStyles['loader-wrapper--inline']]: inline && display,\n });\n const loaderClasses = classNames(\n loaderStyles.loader,\n {\n [loaderStyles['loader--small']]: isSmall,\n [loaderStyles['loader--medium']]: isMedium,\n [loaderStyles['loader--large']]: isLarge,\n },\n className\n );\n const loaderDotClasses = classNames(loaderStyles.loader__dot, {\n [loaderStyles['loader__dot--small']]: isSmall,\n [loaderStyles['loader__dot--medium']]: isMedium,\n [loaderStyles['loader__dot--large']]: isLarge,\n [loaderStyles['loader__dot--banana']]: color === 'banana',\n [loaderStyles['loader__dot--cherry']]: color === 'cherry',\n [loaderStyles['loader__dot--kiwi']]: color === 'kiwi',\n [loaderStyles['loader__dot--neutral']]: color === 'neutral',\n [loaderStyles['loader__dot--plum']]: color === 'plum',\n [loaderStyles['loader__dot--black']]: color === 'black',\n [loaderStyles['loader__dot--white']]: color === 'white',\n });\n\n const wrapperRef = useCallback(\n (node: HTMLDivElement | null) => {\n if (node && !hasInitializedRef.current) {\n hasInitializedRef.current = true;\n if (overlay === Overlay.parent && node.parentElement?.style) {\n node.parentElement.style.position = 'relative';\n setDisplay(true);\n }\n if (inline && node.parentElement?.style) {\n node.parentElement.style.display = 'flex';\n setDisplay(true);\n }\n }\n },\n [overlay, inline]\n );\n\n return (\n <div className={loaderWrapperClasses} ref={wrapperRef} style={overlay === Overlay.screen ? { zIndex: ZIndex.OverlayScreen } : {}}>\n {display && (\n <div\n data-testid={testId}\n data-analyticsid={AnalyticsId.Loader}\n role=\"progressbar\"\n aria-labelledby={ariaLabelledById || labelId}\n className={loaderClasses}\n >\n <div className={loaderDotClasses} />\n <div className={loaderDotClasses} />\n <div className={loaderDotClasses} />\n <div className={loaderDotClasses} />\n {!ariaLabelledById && (\n <span id={labelId} className={loaderStyles['loader__hidden-text']}>\n {ariaLabel}\n </span>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default Loader;\n","import Loader from './Loader';\nexport { Overlay } from './constants';\nexport * from './Loader';\nexport default Loader;\n"],"mappings":";;;;;;AAAA,IAAY,UAAA,yBAAA,WAAL;AACL,WAAA,YAAA;AACA,WAAA,YAAA;;;ACoCF,IAAMA,UAAgC,UAAS;CAC7C,MAAM,EACJ,SACA,OAAO,SACP,YAAY,IACZ,UAAU,MAAM,EAChB,QACA,QACA,QACA,kBACA,YAAY,iBACV;CACJ,MAAM,QAAQ,MAAM,UAAU,UAAU,MAAM,SAAS;CAEvD,MAAM,mBAA4B;AAChC,MAAI,YAAY,QAAQ,UAAU,OAChC,QAAO;AAGT,SAAO;;CAGT,MAAM,CAAC,SAAS,cAAc,SAAS,YAAY,CAAC;CACpD,MAAM,oBAAoB,OAAO,MAAM;CAEvC,MAAM,UAAU,SAAS;CACzB,MAAM,WAAW,SAAS;CAC1B,MAAM,UAAU,SAAS;CAEzB,MAAM,uBAAuB,GAAW;GACrC,aAAa,4BAA4B;GACzC,aAAa,6BAA6B;GAC1C,aAAa,oCAAoC,YAAY,QAAQ;GACrE,aAAa,oCAAoC,YAAY,QAAQ,UAAU;GAC/E,aAAa,4BAA4B,UAAU;EACrD,CAAC;CACF,MAAM,gBAAgB,GACpB,aAAa,QACb;GACG,aAAa,mBAAmB;GAChC,aAAa,oBAAoB;GACjC,aAAa,mBAAmB;EAClC,EACD,UACD;CACD,MAAM,mBAAmB,GAAW,aAAa,aAAa;GAC3D,aAAa,wBAAwB;GACrC,aAAa,yBAAyB;GACtC,aAAa,wBAAwB;GACrC,aAAa,yBAAyB,UAAU;GAChD,aAAa,yBAAyB,UAAU;GAChD,aAAa,uBAAuB,UAAU;GAC9C,aAAa,0BAA0B,UAAU;GACjD,aAAa,uBAAuB,UAAU;GAC9C,aAAa,wBAAwB,UAAU;GAC/C,aAAa,wBAAwB,UAAU;EACjD,CAAC;AAmBF,QACE,oBAAC,OAAA;EAAI,WAAW;EAAsB,KAlBrB,aAChB,SAAgC;AAC/B,OAAI,QAAQ,CAAC,kBAAkB,SAAS;AACtC,sBAAkB,UAAU;AAC5B,QAAI,YAAY,QAAQ,UAAU,KAAK,eAAe,OAAO;AAC3D,UAAK,cAAc,MAAM,WAAW;AACpC,gBAAW,KAAK;;AAElB,QAAI,UAAU,KAAK,eAAe,OAAO;AACvC,UAAK,cAAc,MAAM,UAAU;AACnC,gBAAW,KAAK;;;KAItB,CAAC,SAAS,OAAO,CAClB;EAGwD,OAAO,YAAY,QAAQ,SAAS,EAAE,QAAQ,OAAO,eAAe,GAAG,EAAE;YAC7H,WACC,qBAAC,OAAA;GACC,eAAa;GACb,oBAAkB,YAAY;GAC9B,MAAK;GACL,mBAAiB,oBAAoB;GACrC,WAAW;;IAEX,oBAAC,OAAA,EAAI,WAAW,kBAAA,CAAoB;IACpC,oBAAC,OAAA,EAAI,WAAW,kBAAA,CAAoB;IACpC,oBAAC,OAAA,EAAI,WAAW,kBAAA,CAAoB;IACpC,oBAAC,OAAA,EAAI,WAAW,kBAAA,CAAoB;IACnC,CAAC,oBACA,oBAAC,QAAA;KAAK,IAAI;KAAS,WAAW,aAAa;eACxC;MACI;;IAEL;GAEJ;;ACnIV,IAAA,iBDuIe"}