@helpwave/hightide 0.1.17 → 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 (261) 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 -10
  60. package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
  61. package/dist/components/layout-and-navigation/Pagination.mjs +79 -7
  62. package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -1
  63. package/dist/components/layout-and-navigation/SearchableList.js +127 -26
  64. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
  65. package/dist/components/layout-and-navigation/SearchableList.mjs +126 -25
  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 -29
  106. package/dist/components/modals/InputModal.js.map +1 -1
  107. package/dist/components/modals/InputModal.mjs +18 -15
  108. package/dist/components/modals/InputModal.mjs.map +1 -1
  109. package/dist/components/modals/LanguageModal.js +728 -435
  110. package/dist/components/modals/LanguageModal.js.map +1 -1
  111. package/dist/components/modals/LanguageModal.mjs +728 -431
  112. package/dist/components/modals/LanguageModal.mjs.map +1 -1
  113. package/dist/components/modals/ThemeModal.js +732 -439
  114. package/dist/components/modals/ThemeModal.js.map +1 -1
  115. package/dist/components/modals/ThemeModal.mjs +731 -434
  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 -42
  122. package/dist/components/properties/DateProperty.js.map +1 -1
  123. package/dist/components/properties/DateProperty.mjs +114 -38
  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 -464
  128. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  129. package/dist/components/properties/MultiSelectProperty.mjs +920 -465
  130. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  131. package/dist/components/properties/NumberProperty.js +101 -19
  132. package/dist/components/properties/NumberProperty.js.map +1 -1
  133. package/dist/components/properties/NumberProperty.mjs +101 -19
  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 -244
  142. package/dist/components/properties/SelectProperty.js.map +1 -1
  143. package/dist/components/properties/SelectProperty.mjs +686 -244
  144. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  145. package/dist/components/properties/TextProperty.js +133 -47
  146. package/dist/components/properties/TextProperty.js.map +1 -1
  147. package/dist/components/properties/TextProperty.mjs +133 -47
  148. package/dist/components/properties/TextProperty.mjs.map +1 -1
  149. package/dist/components/table/Table.js +285 -186
  150. package/dist/components/table/Table.js.map +1 -1
  151. package/dist/components/table/Table.mjs +270 -167
  152. package/dist/components/table/Table.mjs.map +1 -1
  153. package/dist/components/table/TableFilterButton.js +179 -79
  154. package/dist/components/table/TableFilterButton.js.map +1 -1
  155. package/dist/components/table/TableFilterButton.mjs +160 -56
  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/Input.js +0 -1
  180. package/dist/components/user-action/Input.js.map +1 -1
  181. package/dist/components/user-action/Input.mjs +0 -1
  182. package/dist/components/user-action/Input.mjs.map +1 -1
  183. package/dist/components/user-action/Menu.d.mts +11 -6
  184. package/dist/components/user-action/Menu.d.ts +11 -6
  185. package/dist/components/user-action/Menu.js +128 -31
  186. package/dist/components/user-action/Menu.js.map +1 -1
  187. package/dist/components/user-action/Menu.mjs +134 -33
  188. package/dist/components/user-action/Menu.mjs.map +1 -1
  189. package/dist/components/user-action/MultiSelect.d.mts +17 -7
  190. package/dist/components/user-action/MultiSelect.d.ts +17 -7
  191. package/dist/components/user-action/MultiSelect.js +796 -376
  192. package/dist/components/user-action/MultiSelect.js.map +1 -1
  193. package/dist/components/user-action/MultiSelect.mjs +781 -357
  194. package/dist/components/user-action/MultiSelect.mjs.map +1 -1
  195. package/dist/components/user-action/ScrollPicker.js +2 -2
  196. package/dist/components/user-action/ScrollPicker.js.map +1 -1
  197. package/dist/components/user-action/ScrollPicker.mjs +2 -2
  198. package/dist/components/user-action/ScrollPicker.mjs.map +1 -1
  199. package/dist/components/user-action/SearchBar.d.mts +14 -0
  200. package/dist/components/user-action/SearchBar.d.ts +14 -0
  201. package/dist/components/user-action/SearchBar.js +673 -0
  202. package/dist/components/user-action/SearchBar.js.map +1 -0
  203. package/dist/components/user-action/SearchBar.mjs +637 -0
  204. package/dist/components/user-action/SearchBar.mjs.map +1 -0
  205. package/dist/components/user-action/Select.d.mts +18 -5
  206. package/dist/components/user-action/Select.d.ts +18 -5
  207. package/dist/components/user-action/Select.js +764 -356
  208. package/dist/components/user-action/Select.js.map +1 -1
  209. package/dist/components/user-action/Select.mjs +761 -350
  210. package/dist/components/user-action/Select.mjs.map +1 -1
  211. package/dist/components/user-action/Textarea.d.mts +1 -1
  212. package/dist/components/user-action/Textarea.d.ts +1 -1
  213. package/dist/components/user-action/Textarea.js +13 -4
  214. package/dist/components/user-action/Textarea.js.map +1 -1
  215. package/dist/components/user-action/Textarea.mjs +13 -4
  216. package/dist/components/user-action/Textarea.mjs.map +1 -1
  217. package/dist/components/user-action/ToggleableInput.js +2 -3
  218. package/dist/components/user-action/ToggleableInput.js.map +1 -1
  219. package/dist/components/user-action/ToggleableInput.mjs +2 -3
  220. package/dist/components/user-action/ToggleableInput.mjs.map +1 -1
  221. package/dist/css/globals.css +251 -113
  222. package/dist/css/uncompiled/globals.css +19 -13
  223. package/dist/css/uncompiled/theme/colors-component.css +12 -3
  224. package/dist/css/uncompiled/theme/colors-semantic.css +10 -7
  225. package/dist/css/uncompiled/utitlity/animation.css +70 -1
  226. package/dist/css/uncompiled/utitlity/general.css +16 -0
  227. package/dist/hooks/useDelay.js +0 -1
  228. package/dist/hooks/useDelay.js.map +1 -1
  229. package/dist/hooks/useDelay.mjs +0 -1
  230. package/dist/hooks/useDelay.mjs.map +1 -1
  231. package/dist/hooks/usePopoverPosition.d.mts +15 -0
  232. package/dist/hooks/usePopoverPosition.d.ts +15 -0
  233. package/dist/hooks/usePopoverPosition.js +81 -0
  234. package/dist/hooks/usePopoverPosition.js.map +1 -0
  235. package/dist/hooks/usePopoverPosition.mjs +57 -0
  236. package/dist/hooks/usePopoverPosition.mjs.map +1 -0
  237. package/dist/hooks/useSearch.d.mts +7 -2
  238. package/dist/hooks/useSearch.d.ts +7 -2
  239. package/dist/hooks/useSearch.js +44 -15
  240. package/dist/hooks/useSearch.js.map +1 -1
  241. package/dist/hooks/useSearch.mjs +45 -16
  242. package/dist/hooks/useSearch.mjs.map +1 -1
  243. package/dist/index.d.mts +6 -4
  244. package/dist/index.d.ts +6 -4
  245. package/dist/index.js +1102 -820
  246. package/dist/index.js.map +1 -1
  247. package/dist/index.mjs +1001 -719
  248. package/dist/index.mjs.map +1 -1
  249. package/dist/localization/defaults/form.d.mts +2 -0
  250. package/dist/localization/defaults/form.d.ts +2 -0
  251. package/dist/localization/defaults/form.js +4 -0
  252. package/dist/localization/defaults/form.js.map +1 -1
  253. package/dist/localization/defaults/form.mjs +4 -0
  254. package/dist/localization/defaults/form.mjs.map +1 -1
  255. package/dist/util/simpleSearch.d.mts +1 -1
  256. package/dist/util/simpleSearch.d.ts +1 -1
  257. package/dist/util/simpleSearch.js +4 -1
  258. package/dist/util/simpleSearch.js.map +1 -1
  259. package/dist/util/simpleSearch.mjs +4 -1
  260. package/dist/util/simpleSearch.mjs.map +1 -1
  261. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  // src/components/user-action/Button.tsx
2
+ import { forwardRef } from "react";
2
3
  import clsx from "clsx";
3
4
  import { jsx, jsxs } from "react/jsx-runtime";
4
5
  var ButtonColorUtil = {
@@ -24,7 +25,7 @@ var ButtonUtil = {
24
25
  paddingMapping,
25
26
  iconPaddingMapping
26
27
  };
27
- var SolidButton = ({
28
+ var SolidButton = forwardRef(function SolidButton2({
28
29
  children,
29
30
  disabled = false,
30
31
  color = "primary",
@@ -34,7 +35,7 @@ var SolidButton = ({
34
35
  onClick,
35
36
  className,
36
37
  ...restProps
37
- }) => {
38
+ }, ref) {
38
39
  const colorClasses = {
39
40
  primary: "bg-button-solid-primary-background text-button-solid-primary-text",
40
41
  secondary: "bg-button-solid-secondary-background text-button-solid-secondary-text",
@@ -56,8 +57,9 @@ var SolidButton = ({
56
57
  return /* @__PURE__ */ jsxs(
57
58
  "button",
58
59
  {
59
- onClick: disabled ? void 0 : onClick,
60
- disabled: disabled || onClick === void 0,
60
+ ref,
61
+ onClick,
62
+ disabled,
61
63
  className: clsx(
62
64
  {
63
65
  "text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
@@ -92,13 +94,12 @@ var SolidButton = ({
92
94
  ]
93
95
  }
94
96
  );
95
- };
97
+ });
96
98
  var IconButton = ({
97
99
  children,
98
100
  disabled = false,
99
101
  color = "primary",
100
102
  size = "medium",
101
- onClick,
102
103
  className,
103
104
  ...restProps
104
105
  }) => {
@@ -115,8 +116,7 @@ var IconButton = ({
115
116
  return /* @__PURE__ */ jsx(
116
117
  "button",
117
118
  {
118
- onClick: disabled ? void 0 : onClick,
119
- disabled: disabled || onClick === void 0,
119
+ disabled,
120
120
  className: clsx(
121
121
  {
122
122
  "text-disabled-text bg-disabled-background cursor-not-allowed": disabled && color !== "transparent",
@@ -134,7 +134,7 @@ var IconButton = ({
134
134
  };
135
135
 
136
136
  // src/components/user-action/Input.tsx
137
- import { forwardRef, useEffect as useEffect3, useImperativeHandle, useRef, useState as useState2 } from "react";
137
+ import { forwardRef as forwardRef2, useEffect as useEffect3, useImperativeHandle, useRef, useState as useState2 } from "react";
138
138
  import clsx3 from "clsx";
139
139
 
140
140
  // src/hooks/useDelay.ts
@@ -174,7 +174,6 @@ function useDelay(options) {
174
174
  setTimer(void 0);
175
175
  }
176
176
  }, [disabled, timer]);
177
- console.log(timer);
178
177
  return { restartTimer, clearTimer, hasActiveTimer: !!timer };
179
178
  }
180
179
 
@@ -296,7 +295,7 @@ var defaultEditCompleteOptions = {
296
295
  afterDelay: true,
297
296
  delay: 2500
298
297
  };
299
- var Input = forwardRef(function Input2({
298
+ var Input = forwardRef2(function Input2({
300
299
  id,
301
300
  type = "text",
302
301
  value,
@@ -371,7 +370,7 @@ var Input = forwardRef(function Input2({
371
370
  )
372
371
  ] });
373
372
  });
374
- var FormInput = forwardRef(function FormInput2({
373
+ var FormInput = forwardRef2(function FormInput2({
375
374
  id,
376
375
  labelText,
377
376
  errorText,
@@ -410,7 +409,11 @@ var FormInput = forwardRef(function FormInput2({
410
409
  import { FilterIcon } from "lucide-react";
411
410
 
412
411
  // src/components/user-action/Menu.tsx
413
- import { useRef as useRef2 } from "react";
412
+ import {
413
+ useEffect as useEffect6,
414
+ useRef as useRef2,
415
+ useState as useState4
416
+ } from "react";
414
417
  import clsx4 from "clsx";
415
418
 
416
419
  // src/hooks/useOutsideClick.ts
@@ -488,56 +491,153 @@ var BagFunctionUtil = {
488
491
  resolve
489
492
  };
490
493
 
494
+ // src/hooks/usePopoverPosition.ts
495
+ var defaultPopoverPositionOptions = {
496
+ edgePadding: 16,
497
+ outerGap: 4,
498
+ horizontalAlignment: "leftInside",
499
+ verticalAlignment: "bottomOutside",
500
+ disabled: false
501
+ };
502
+ var usePopoverPosition = (trigger, options) => {
503
+ const {
504
+ edgePadding,
505
+ outerGap,
506
+ verticalAlignment,
507
+ horizontalAlignment,
508
+ disabled
509
+ } = { ...defaultPopoverPositionOptions, ...options };
510
+ if (disabled || !trigger) {
511
+ return {};
512
+ }
513
+ const left = {
514
+ leftOutside: trigger.left - outerGap,
515
+ leftInside: trigger.left,
516
+ rightOutside: trigger.right + outerGap,
517
+ rightInside: trigger.right,
518
+ center: trigger.left + trigger.width / 2
519
+ }[horizontalAlignment];
520
+ const top = {
521
+ topOutside: trigger.top - outerGap,
522
+ topInside: trigger.top,
523
+ bottomOutside: trigger.bottom + outerGap,
524
+ bottomInside: trigger.bottom,
525
+ center: trigger.top + trigger.height / 2
526
+ }[verticalAlignment];
527
+ const translateX = {
528
+ leftOutside: "-100%",
529
+ leftInside: void 0,
530
+ rightOutside: void 0,
531
+ rightInside: "-100%",
532
+ center: "-50%"
533
+ }[horizontalAlignment];
534
+ const translateY = {
535
+ topOutside: "-100%",
536
+ topInside: void 0,
537
+ bottomOutside: void 0,
538
+ bottomInside: "-100%",
539
+ center: "-50%"
540
+ }[verticalAlignment];
541
+ return {
542
+ left: Math.max(left, edgePadding),
543
+ top: Math.max(top, edgePadding),
544
+ translate: [translateX ?? "0", translateY ?? "0"].join(" ")
545
+ };
546
+ };
547
+
491
548
  // src/components/user-action/Menu.tsx
492
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
549
+ import { createPortal } from "react-dom";
550
+ import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
551
+ function getScrollableParents(element) {
552
+ const scrollables = [];
553
+ let parent = element.parentElement;
554
+ while (parent) {
555
+ scrollables.push(parent);
556
+ parent = parent.parentElement;
557
+ }
558
+ return scrollables;
559
+ }
493
560
  var Menu = ({
494
561
  trigger,
495
562
  children,
496
- alignment = "tl",
563
+ alignmentHorizontal = "leftInside",
564
+ alignmentVertical = "bottomOutside",
497
565
  showOnHover = false,
566
+ disabled = false,
498
567
  menuClassName = ""
499
568
  }) => {
500
- const { isHovered: isOpen, setIsHovered: setIsOpen, handlers } = useHoverState({ isDisabled: !showOnHover });
569
+ const { isHovered: isOpen, setIsHovered: setIsOpen } = useHoverState({ isDisabled: !showOnHover || disabled });
501
570
  const triggerRef = useRef2(null);
502
571
  const menuRef = useRef2(null);
503
572
  useOutsideClick([triggerRef, menuRef], () => setIsOpen(false));
504
- const bag = { isOpen, close: () => setIsOpen(false) };
505
- return /* @__PURE__ */ jsxs3(
506
- "div",
507
- {
508
- className: "relative",
509
- ...handlers,
510
- children: [
511
- trigger(() => setIsOpen(!isOpen), triggerRef),
512
- /* @__PURE__ */ jsx4(
513
- "div",
573
+ const [isHidden, setIsHidden] = useState4(true);
574
+ const bag = {
575
+ isOpen,
576
+ close: () => setIsOpen(false),
577
+ toggleOpen: () => setIsOpen((prevState) => !prevState),
578
+ disabled
579
+ };
580
+ const menuPosition = usePopoverPosition(
581
+ triggerRef.current?.getBoundingClientRect(),
582
+ { verticalAlignment: alignmentVertical, horizontalAlignment: alignmentHorizontal, disabled }
583
+ );
584
+ useEffect6(() => {
585
+ if (!isOpen) return;
586
+ const triggerEl = triggerRef.current;
587
+ if (!triggerEl) return;
588
+ const scrollableParents = getScrollableParents(triggerEl);
589
+ const close = () => setIsOpen(false);
590
+ scrollableParents.forEach((parent) => {
591
+ parent.addEventListener("scroll", close);
592
+ });
593
+ window.addEventListener("resize", close);
594
+ return () => {
595
+ scrollableParents.forEach((parent) => {
596
+ parent.removeEventListener("scroll", close);
597
+ });
598
+ window.removeEventListener("resize", close);
599
+ };
600
+ }, [isOpen, setIsOpen]);
601
+ useEffect6(() => {
602
+ if (isOpen) {
603
+ setIsHidden(false);
604
+ }
605
+ }, [isOpen]);
606
+ return /* @__PURE__ */ jsxs3(Fragment, { children: [
607
+ trigger(bag, triggerRef),
608
+ createPortal(/* @__PURE__ */ jsx4(
609
+ "div",
610
+ {
611
+ ref: menuRef,
612
+ onClick: (e) => e.stopPropagation(),
613
+ className: clsx4(
614
+ "absolute rounded-md bg-menu-background text-menu-text shadow-around-lg z-10",
514
615
  {
515
- ref: menuRef,
516
- onClick: (e) => e.stopPropagation(),
517
- className: clsx4(
518
- "absolute top-full mt-1 min-w-40 rounded-lg bg-menu-background text-menu-text shadow-around-lg z-10",
519
- {
520
- "top-0": alignment[0] === "t",
521
- "bottom-0": alignment[0] === "b",
522
- "left-0": alignment[1] === "l",
523
- "right-0": alignment[1] === "r",
524
- "hidden": !isOpen
525
- },
526
- menuClassName
527
- ),
528
- children: BagFunctionUtil.resolve(children, bag)
616
+ "animate-pop-in": isOpen,
617
+ "animate-pop-out": !isOpen,
618
+ "hidden": isHidden
619
+ },
620
+ menuClassName
621
+ ),
622
+ onAnimationEnd: () => {
623
+ if (!isOpen) {
624
+ setIsHidden(true);
529
625
  }
530
- )
531
- ]
532
- }
533
- );
626
+ },
627
+ style: {
628
+ ...menuPosition
629
+ },
630
+ children: BagFunctionUtil.resolve(children, bag)
631
+ }
632
+ ), document.body)
633
+ ] });
534
634
  };
535
635
 
536
636
  // src/localization/LanguageProvider.tsx
537
- import { createContext, useContext, useEffect as useEffect7, useState as useState5 } from "react";
637
+ import { createContext, useContext, useEffect as useEffect8, useState as useState6 } from "react";
538
638
 
539
639
  // src/hooks/useLocalStorage.ts
540
- import { useCallback as useCallback2, useEffect as useEffect6, useState as useState4 } from "react";
640
+ import { useCallback as useCallback2, useEffect as useEffect7, useState as useState5 } from "react";
541
641
 
542
642
  // src/localization/util.ts
543
643
  var languages = ["en", "de"];
@@ -623,6 +723,7 @@ var useTranslation = (translations, overwriteTranslation = {}) => {
623
723
  // src/localization/defaults/form.ts
624
724
  var formTranslation = {
625
725
  en: {
726
+ add: "Add",
626
727
  all: "All",
627
728
  apply: "Apply",
628
729
  back: "Back",
@@ -635,6 +736,7 @@ var formTranslation = {
635
736
  confirm: "Confirm",
636
737
  copy: "Copy",
637
738
  copied: "Copied",
739
+ create: "Create",
638
740
  decline: "Decline",
639
741
  delete: "Delete",
640
742
  discard: "Discard",
@@ -677,6 +779,7 @@ var formTranslation = {
677
779
  yes: "Yes"
678
780
  },
679
781
  de: {
782
+ add: "Hinzuf\xFCgen",
680
783
  all: "Alle",
681
784
  apply: "Anwenden",
682
785
  back: "Zur\xFCck",
@@ -689,6 +792,7 @@ var formTranslation = {
689
792
  confirm: "Best\xE4tigen",
690
793
  copy: "Kopieren",
691
794
  copied: "Kopiert",
795
+ create: "Erstellen",
692
796
  decline: "Ablehnen",
693
797
  delete: "L\xF6schen",
694
798
  discard: "Verwerfen",
@@ -733,8 +837,8 @@ var formTranslation = {
733
837
  };
734
838
 
735
839
  // src/components/table/TableFilterButton.tsx
736
- import { useEffect as useEffect8, useState as useState6 } from "react";
737
- import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
840
+ import { useEffect as useEffect9, useState as useState7 } from "react";
841
+ import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
738
842
  var defaultTableFilterTranslation = {
739
843
  en: {
740
844
  filter: "Filter",
@@ -759,16 +863,16 @@ var TableFilterButton = ({
759
863
  }) => {
760
864
  const translation = useTranslation([formTranslation, defaultTableFilterTranslation]);
761
865
  const columnFilterValue = column.getFilterValue();
762
- const [filterValue, setFilterValue] = useState6(columnFilterValue);
866
+ const [filterValue, setFilterValue] = useState7(columnFilterValue);
763
867
  const hasFilter = !!filterValue;
764
- useEffect8(() => {
868
+ useEffect9(() => {
765
869
  setFilterValue(columnFilterValue);
766
870
  }, [columnFilterValue]);
767
871
  return /* @__PURE__ */ jsx6(
768
872
  Menu,
769
873
  {
770
- trigger: (onClick, ref) => /* @__PURE__ */ jsxs4("div", { ref, className: "relative", children: [
771
- /* @__PURE__ */ jsx6(IconButton, { color: "neutral", size: "tiny", onClick, children: /* @__PURE__ */ jsx6(FilterIcon, {}) }),
874
+ trigger: ({ toggleOpen }, ref) => /* @__PURE__ */ jsxs4("div", { ref, className: "relative", children: [
875
+ /* @__PURE__ */ jsx6(IconButton, { color: "neutral", size: "tiny", onClick: toggleOpen, children: /* @__PURE__ */ jsx6(FilterIcon, {}) }),
772
876
  hasFilter && /* @__PURE__ */ jsx6(
773
877
  "div",
774
878
  {
@@ -777,7 +881,7 @@ var TableFilterButton = ({
777
881
  }
778
882
  )
779
883
  ] }),
780
- children: ({ close }) => /* @__PURE__ */ jsxs4("div", { className: "col gap-y-1 p-2 items-start font-normal text-menu-text", children: [
884
+ children: ({ close }) => /* @__PURE__ */ jsxs4("div", { className: "flex-col-1 p-2 items-start font-normal text-menu-text", children: [
781
885
  /* @__PURE__ */ jsx6("h4", { className: "textstyle-title-sm", children: translation("filter") }),
782
886
  filterType === "text" && /* @__PURE__ */ jsx6(
783
887
  Input,
@@ -789,7 +893,7 @@ var TableFilterButton = ({
789
893
  className: "h-10"
790
894
  }
791
895
  ),
792
- filterType === "range" && /* @__PURE__ */ jsxs4("div", { className: "row gap-x-2 items-center", children: [
896
+ filterType === "range" && /* @__PURE__ */ jsxs4("div", { className: "flex-row-2 items-center", children: [
793
897
  /* @__PURE__ */ jsx6(
794
898
  Input,
795
899
  {
@@ -818,7 +922,7 @@ var TableFilterButton = ({
818
922
  }
819
923
  )
820
924
  ] }),
821
- filterType === "dateRange" && /* @__PURE__ */ jsxs4(Fragment, { children: [
925
+ filterType === "dateRange" && /* @__PURE__ */ jsxs4(Fragment2, { children: [
822
926
  /* @__PURE__ */ jsx6(
823
927
  Input,
824
928
  {
@@ -846,7 +950,7 @@ var TableFilterButton = ({
846
950
  }
847
951
  )
848
952
  ] }),
849
- /* @__PURE__ */ jsxs4("div", { className: "row justify-end w-full", children: [
953
+ /* @__PURE__ */ jsxs4("div", { className: "flex-row-2 justify-end w-full", children: [
850
954
  hasFilter && /* @__PURE__ */ jsx6(SolidButton, { color: "negative", size: "small", onClick: () => {
851
955
  column.setFilterValue(void 0);
852
956
  close();