@navikt/ds-react 8.2.0 → 8.2.2

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 (282) hide show
  1. package/cjs/accordion/Accordion.d.ts +9 -7
  2. package/cjs/accordion/Accordion.js +4 -1
  3. package/cjs/accordion/Accordion.js.map +1 -1
  4. package/cjs/accordion/AccordionItem.d.ts +8 -6
  5. package/cjs/accordion/AccordionItem.js +1 -7
  6. package/cjs/accordion/AccordionItem.js.map +1 -1
  7. package/cjs/accordion/index.d.ts +2 -4
  8. package/cjs/accordion/index.js +3 -6
  9. package/cjs/accordion/index.js.map +1 -1
  10. package/cjs/chat/Chat.d.ts +4 -2
  11. package/cjs/chat/Chat.js +2 -1
  12. package/cjs/chat/Chat.js.map +1 -1
  13. package/cjs/chat/index.d.ts +2 -2
  14. package/cjs/chat/index.js +1 -2
  15. package/cjs/chat/index.js.map +1 -1
  16. package/cjs/chips/Chips.d.ts +7 -6
  17. package/cjs/chips/Chips.js +3 -1
  18. package/cjs/chips/Chips.js.map +1 -1
  19. package/cjs/chips/index.d.ts +2 -3
  20. package/cjs/chips/index.js +2 -4
  21. package/cjs/chips/index.js.map +1 -1
  22. package/cjs/collapsible/Collapsible.d.ts +6 -4
  23. package/cjs/collapsible/Collapsible.js +4 -2
  24. package/cjs/collapsible/Collapsible.js.map +1 -1
  25. package/cjs/collapsible/index.d.ts +2 -3
  26. package/cjs/collapsible/index.js +2 -4
  27. package/cjs/collapsible/index.js.map +1 -1
  28. package/cjs/data/table/root/DataTableRoot.js +2 -1
  29. package/cjs/data/table/root/DataTableRoot.js.map +1 -1
  30. package/cjs/data/table/td/DataTableTd.js +3 -2
  31. package/cjs/data/table/td/DataTableTd.js.map +1 -1
  32. package/cjs/data/table/th/DataTableTh.d.ts +12 -2
  33. package/cjs/data/table/th/DataTableTh.js +7 -2
  34. package/cjs/data/table/th/DataTableTh.js.map +1 -1
  35. package/cjs/data/toolbar/button/DataToolbarButton.d.ts +17 -0
  36. package/cjs/data/toolbar/button/DataToolbarButton.js +28 -0
  37. package/cjs/data/toolbar/button/DataToolbarButton.js.map +1 -0
  38. package/cjs/data/toolbar/root/DataToolbarRoot.d.ts +13 -2
  39. package/cjs/data/toolbar/root/DataToolbarRoot.js +4 -1
  40. package/cjs/data/toolbar/root/DataToolbarRoot.js.map +1 -1
  41. package/cjs/data/toolbar/search-field/DataToolbarSearchField.d.ts +3 -2
  42. package/cjs/data/toolbar/search-field/DataToolbarSearchField.js +4 -1
  43. package/cjs/data/toolbar/search-field/DataToolbarSearchField.js.map +1 -1
  44. package/cjs/data/toolbar/toggle-button/DataToolbarToggleButton.d.ts +7 -6
  45. package/cjs/data/toolbar/toggle-button/DataToolbarToggleButton.js +2 -1
  46. package/cjs/data/toolbar/toggle-button/DataToolbarToggleButton.js.map +1 -1
  47. package/cjs/date/datepicker/DatePicker.d.ts +6 -3
  48. package/cjs/date/datepicker/DatePicker.js +3 -1
  49. package/cjs/date/datepicker/DatePicker.js.map +1 -1
  50. package/cjs/date/datepicker/index.d.ts +2 -3
  51. package/cjs/date/datepicker/index.js +3 -5
  52. package/cjs/date/datepicker/index.js.map +1 -1
  53. package/cjs/date/monthpicker/MonthPicker.d.ts +5 -2
  54. package/cjs/date/monthpicker/MonthPicker.js +3 -1
  55. package/cjs/date/monthpicker/MonthPicker.js.map +1 -1
  56. package/cjs/date/monthpicker/index.d.ts +2 -4
  57. package/cjs/date/monthpicker/index.js +2 -4
  58. package/cjs/date/monthpicker/index.js.map +1 -1
  59. package/cjs/dialog/index.d.ts +2 -18
  60. package/cjs/dialog/index.js +8 -16
  61. package/cjs/dialog/index.js.map +1 -1
  62. package/cjs/dialog/root/DialogRoot.d.ts +10 -9
  63. package/cjs/dialog/root/DialogRoot.js +9 -1
  64. package/cjs/dialog/root/DialogRoot.js.map +1 -1
  65. package/cjs/expansion-card/ExpansionCard.d.ts +6 -5
  66. package/cjs/expansion-card/ExpansionCard.js +3 -9
  67. package/cjs/expansion-card/ExpansionCard.js.map +1 -1
  68. package/cjs/form/file-upload/FileUpload.d.ts +2 -2
  69. package/cjs/form/file-upload/FileUpload.js +1 -1
  70. package/cjs/form/file-upload/FileUpload.js.map +1 -1
  71. package/cjs/form/search/Search.d.ts +2 -1
  72. package/cjs/form/search/Search.js.map +1 -1
  73. package/cjs/internal-header/InternalHeader.d.ts +11 -10
  74. package/cjs/internal-header/InternalHeader.js +5 -1
  75. package/cjs/internal-header/InternalHeader.js.map +1 -1
  76. package/cjs/internal-header/index.d.ts +2 -5
  77. package/cjs/internal-header/index.js +4 -8
  78. package/cjs/internal-header/index.js.map +1 -1
  79. package/cjs/layout/bleed/Bleed.d.ts +1 -1
  80. package/cjs/layout/bleed/Bleed.js +1 -1
  81. package/cjs/layout/responsive/Responsive.d.ts +4 -4
  82. package/cjs/layout/responsive/Responsive.js +4 -4
  83. package/cjs/layout/stack/HStack.d.ts +2 -2
  84. package/cjs/layout/stack/HStack.js +2 -2
  85. package/cjs/layout/stack/Spacer.d.ts +1 -1
  86. package/cjs/layout/stack/Spacer.js +1 -1
  87. package/cjs/layout/stack/VStack.d.ts +2 -2
  88. package/cjs/layout/stack/VStack.js +2 -2
  89. package/cjs/link-panel/LinkPanel.d.ts +1 -1
  90. package/cjs/link-panel/LinkPanel.js.map +1 -1
  91. package/cjs/list/List.d.ts +4 -2
  92. package/cjs/list/List.js +2 -1
  93. package/cjs/list/List.js.map +1 -1
  94. package/cjs/list/index.d.ts +2 -3
  95. package/cjs/list/index.js +1 -2
  96. package/cjs/list/index.js.map +1 -1
  97. package/cjs/overlays/action-menu/ActionMenu.d.ts +42 -42
  98. package/cjs/overlays/action-menu/ActionMenu.js +1 -1
  99. package/cjs/overlays/action-menu/ActionMenu.js.map +1 -1
  100. package/cjs/panel/Panel.d.ts +2 -2
  101. package/cjs/panel/Panel.js +2 -2
  102. package/cjs/stepper/Stepper.d.ts +4 -2
  103. package/cjs/stepper/Stepper.js +2 -1
  104. package/cjs/stepper/Stepper.js.map +1 -1
  105. package/cjs/stepper/index.d.ts +2 -2
  106. package/cjs/stepper/index.js +1 -2
  107. package/cjs/stepper/index.js.map +1 -1
  108. package/cjs/tabs/Tabs.d.ts +5 -3
  109. package/cjs/tabs/Tabs.js +4 -1
  110. package/cjs/tabs/Tabs.js.map +1 -1
  111. package/cjs/tabs/index.d.ts +2 -5
  112. package/cjs/tabs/index.js +3 -6
  113. package/cjs/tabs/index.js.map +1 -1
  114. package/cjs/toggle-group/ToggleGroup.d.ts +4 -2
  115. package/cjs/toggle-group/ToggleGroup.js +2 -1
  116. package/cjs/toggle-group/ToggleGroup.js.map +1 -1
  117. package/cjs/toggle-group/index.d.ts +2 -3
  118. package/cjs/toggle-group/index.js +1 -2
  119. package/cjs/toggle-group/index.js.map +1 -1
  120. package/esm/accordion/Accordion.d.ts +9 -7
  121. package/esm/accordion/Accordion.js +1 -0
  122. package/esm/accordion/Accordion.js.map +1 -1
  123. package/esm/accordion/AccordionItem.d.ts +8 -6
  124. package/esm/accordion/AccordionItem.js +2 -8
  125. package/esm/accordion/AccordionItem.js.map +1 -1
  126. package/esm/accordion/index.d.ts +2 -4
  127. package/esm/accordion/index.js +1 -4
  128. package/esm/accordion/index.js.map +1 -1
  129. package/esm/chat/Chat.d.ts +4 -2
  130. package/esm/chat/Chat.js +1 -0
  131. package/esm/chat/Chat.js.map +1 -1
  132. package/esm/chat/index.d.ts +2 -2
  133. package/esm/chat/index.js +1 -2
  134. package/esm/chat/index.js.map +1 -1
  135. package/esm/chips/Chips.d.ts +7 -6
  136. package/esm/chips/Chips.js +1 -0
  137. package/esm/chips/Chips.js.map +1 -1
  138. package/esm/chips/index.d.ts +2 -3
  139. package/esm/chips/index.js +1 -3
  140. package/esm/chips/index.js.map +1 -1
  141. package/esm/collapsible/Collapsible.d.ts +6 -4
  142. package/esm/collapsible/Collapsible.js +2 -1
  143. package/esm/collapsible/Collapsible.js.map +1 -1
  144. package/esm/collapsible/index.d.ts +2 -3
  145. package/esm/collapsible/index.js +1 -3
  146. package/esm/collapsible/index.js.map +1 -1
  147. package/esm/data/table/root/DataTableRoot.js +2 -1
  148. package/esm/data/table/root/DataTableRoot.js.map +1 -1
  149. package/esm/data/table/td/DataTableTd.js +3 -2
  150. package/esm/data/table/td/DataTableTd.js.map +1 -1
  151. package/esm/data/table/th/DataTableTh.d.ts +12 -2
  152. package/esm/data/table/th/DataTableTh.js +7 -2
  153. package/esm/data/table/th/DataTableTh.js.map +1 -1
  154. package/esm/data/toolbar/button/DataToolbarButton.d.ts +17 -0
  155. package/esm/data/toolbar/button/DataToolbarButton.js +22 -0
  156. package/esm/data/toolbar/button/DataToolbarButton.js.map +1 -0
  157. package/esm/data/toolbar/root/DataToolbarRoot.d.ts +13 -2
  158. package/esm/data/toolbar/root/DataToolbarRoot.js +3 -1
  159. package/esm/data/toolbar/root/DataToolbarRoot.js.map +1 -1
  160. package/esm/data/toolbar/search-field/DataToolbarSearchField.d.ts +3 -2
  161. package/esm/data/toolbar/search-field/DataToolbarSearchField.js +4 -1
  162. package/esm/data/toolbar/search-field/DataToolbarSearchField.js.map +1 -1
  163. package/esm/data/toolbar/toggle-button/DataToolbarToggleButton.d.ts +7 -6
  164. package/esm/data/toolbar/toggle-button/DataToolbarToggleButton.js +2 -1
  165. package/esm/data/toolbar/toggle-button/DataToolbarToggleButton.js.map +1 -1
  166. package/esm/date/datepicker/DatePicker.d.ts +6 -3
  167. package/esm/date/datepicker/DatePicker.js +2 -1
  168. package/esm/date/datepicker/DatePicker.js.map +1 -1
  169. package/esm/date/datepicker/index.d.ts +2 -3
  170. package/esm/date/datepicker/index.js +1 -3
  171. package/esm/date/datepicker/index.js.map +1 -1
  172. package/esm/date/monthpicker/MonthPicker.d.ts +5 -2
  173. package/esm/date/monthpicker/MonthPicker.js +3 -2
  174. package/esm/date/monthpicker/MonthPicker.js.map +1 -1
  175. package/esm/date/monthpicker/index.d.ts +2 -4
  176. package/esm/date/monthpicker/index.js +1 -3
  177. package/esm/date/monthpicker/index.js.map +1 -1
  178. package/esm/dialog/index.d.ts +2 -18
  179. package/esm/dialog/index.js +1 -9
  180. package/esm/dialog/index.js.map +1 -1
  181. package/esm/dialog/root/DialogRoot.d.ts +10 -9
  182. package/esm/dialog/root/DialogRoot.js +3 -2
  183. package/esm/dialog/root/DialogRoot.js.map +1 -1
  184. package/esm/expansion-card/ExpansionCard.d.ts +6 -5
  185. package/esm/expansion-card/ExpansionCard.js +4 -10
  186. package/esm/expansion-card/ExpansionCard.js.map +1 -1
  187. package/esm/form/file-upload/FileUpload.d.ts +2 -2
  188. package/esm/form/file-upload/FileUpload.js +1 -1
  189. package/esm/form/file-upload/FileUpload.js.map +1 -1
  190. package/esm/form/search/Search.d.ts +2 -1
  191. package/esm/form/search/Search.js.map +1 -1
  192. package/esm/internal-header/InternalHeader.d.ts +11 -10
  193. package/esm/internal-header/InternalHeader.js +1 -0
  194. package/esm/internal-header/InternalHeader.js.map +1 -1
  195. package/esm/internal-header/index.d.ts +2 -5
  196. package/esm/internal-header/index.js +1 -5
  197. package/esm/internal-header/index.js.map +1 -1
  198. package/esm/layout/bleed/Bleed.d.ts +1 -1
  199. package/esm/layout/bleed/Bleed.js +1 -1
  200. package/esm/layout/responsive/Responsive.d.ts +4 -4
  201. package/esm/layout/responsive/Responsive.js +4 -4
  202. package/esm/layout/stack/HStack.d.ts +2 -2
  203. package/esm/layout/stack/HStack.js +2 -2
  204. package/esm/layout/stack/Spacer.d.ts +1 -1
  205. package/esm/layout/stack/Spacer.js +1 -1
  206. package/esm/layout/stack/VStack.d.ts +2 -2
  207. package/esm/layout/stack/VStack.js +2 -2
  208. package/esm/link-panel/LinkPanel.d.ts +1 -1
  209. package/esm/link-panel/LinkPanel.js.map +1 -1
  210. package/esm/list/List.d.ts +4 -2
  211. package/esm/list/List.js +1 -0
  212. package/esm/list/List.js.map +1 -1
  213. package/esm/list/index.d.ts +2 -3
  214. package/esm/list/index.js +1 -2
  215. package/esm/list/index.js.map +1 -1
  216. package/esm/overlays/action-menu/ActionMenu.d.ts +42 -42
  217. package/esm/overlays/action-menu/ActionMenu.js +1 -1
  218. package/esm/overlays/action-menu/ActionMenu.js.map +1 -1
  219. package/esm/panel/Panel.d.ts +2 -2
  220. package/esm/panel/Panel.js +2 -2
  221. package/esm/stepper/Stepper.d.ts +4 -2
  222. package/esm/stepper/Stepper.js +1 -0
  223. package/esm/stepper/Stepper.js.map +1 -1
  224. package/esm/stepper/index.d.ts +2 -2
  225. package/esm/stepper/index.js +1 -2
  226. package/esm/stepper/index.js.map +1 -1
  227. package/esm/tabs/Tabs.d.ts +5 -3
  228. package/esm/tabs/Tabs.js +1 -0
  229. package/esm/tabs/Tabs.js.map +1 -1
  230. package/esm/tabs/index.d.ts +2 -5
  231. package/esm/tabs/index.js +1 -4
  232. package/esm/tabs/index.js.map +1 -1
  233. package/esm/toggle-group/ToggleGroup.d.ts +4 -2
  234. package/esm/toggle-group/ToggleGroup.js +1 -0
  235. package/esm/toggle-group/ToggleGroup.js.map +1 -1
  236. package/esm/toggle-group/index.d.ts +2 -3
  237. package/esm/toggle-group/index.js +1 -2
  238. package/esm/toggle-group/index.js.map +1 -1
  239. package/package.json +4 -4
  240. package/src/accordion/Accordion.tsx +14 -14
  241. package/src/accordion/AccordionItem.tsx +11 -18
  242. package/src/accordion/index.ts +11 -12
  243. package/src/chat/Chat.tsx +6 -5
  244. package/src/chat/index.ts +2 -2
  245. package/src/chips/Chips.tsx +8 -8
  246. package/src/chips/index.ts +6 -6
  247. package/src/collapsible/Collapsible.tsx +18 -10
  248. package/src/collapsible/index.ts +9 -8
  249. package/src/data/table/root/DataTableRoot.tsx +7 -5
  250. package/src/data/table/td/DataTableTd.tsx +4 -2
  251. package/src/data/table/th/DataTableTh.tsx +54 -3
  252. package/src/data/toolbar/button/DataToolbarButton.tsx +34 -0
  253. package/src/data/toolbar/root/DataToolbarRoot.tsx +22 -1
  254. package/src/data/toolbar/search-field/DataToolbarSearchField.tsx +15 -14
  255. package/src/data/toolbar/toggle-button/DataToolbarToggleButton.tsx +12 -5
  256. package/src/date/datepicker/DatePicker.tsx +13 -5
  257. package/src/date/datepicker/index.ts +10 -6
  258. package/src/date/monthpicker/MonthPicker.tsx +13 -4
  259. package/src/date/monthpicker/index.ts +7 -5
  260. package/src/dialog/index.ts +22 -18
  261. package/src/dialog/root/DialogRoot.tsx +37 -9
  262. package/src/expansion-card/ExpansionCard.tsx +15 -21
  263. package/src/form/file-upload/FileUpload.tsx +5 -6
  264. package/src/form/search/Search.tsx +9 -6
  265. package/src/internal-header/InternalHeader.tsx +21 -15
  266. package/src/internal-header/index.ts +11 -17
  267. package/src/layout/bleed/Bleed.tsx +1 -1
  268. package/src/layout/responsive/Responsive.tsx +4 -4
  269. package/src/layout/stack/HStack.tsx +2 -2
  270. package/src/layout/stack/Spacer.tsx +1 -1
  271. package/src/layout/stack/VStack.tsx +2 -2
  272. package/src/link-panel/LinkPanel.tsx +6 -5
  273. package/src/list/List.tsx +5 -5
  274. package/src/list/index.ts +2 -3
  275. package/src/overlays/action-menu/ActionMenu.tsx +56 -52
  276. package/src/panel/Panel.tsx +2 -2
  277. package/src/stepper/Stepper.tsx +6 -5
  278. package/src/stepper/index.ts +2 -2
  279. package/src/tabs/Tabs.tsx +13 -7
  280. package/src/tabs/index.ts +7 -11
  281. package/src/toggle-group/ToggleGroup.tsx +7 -6
  282. package/src/toggle-group/index.ts +2 -6
@@ -1,16 +1,67 @@
1
1
  import React, { forwardRef } from "react";
2
+ import {
3
+ CaretLeftRightIcon,
4
+ PushPinFillIcon,
5
+ PushPinIcon,
6
+ } from "@navikt/aksel-icons";
7
+ import { Button } from "../../../button";
2
8
  import { cl } from "../../../utils/helpers";
3
9
 
4
- type DataTableThProps = React.HTMLAttributes<HTMLTableCellElement>;
10
+ type DataTableThProps = React.HTMLAttributes<HTMLTableCellElement> & {
11
+ resizeHandler?: React.MouseEventHandler<HTMLButtonElement>;
12
+ isPinned?: boolean;
13
+ pinningHandler?: React.MouseEventHandler<HTMLButtonElement>;
14
+ size?: number;
15
+ };
5
16
 
6
17
  const DataTableTh = forwardRef<HTMLTableCellElement, DataTableThProps>(
7
- ({ className, ...rest }, forwardedRef) => {
18
+ (
19
+ {
20
+ className,
21
+ children,
22
+ resizeHandler,
23
+ isPinned = false,
24
+ pinningHandler,
25
+ size,
26
+ ...rest
27
+ },
28
+ forwardedRef,
29
+ ) => {
8
30
  return (
9
31
  <th
10
32
  {...rest}
11
33
  ref={forwardedRef}
12
34
  className={cl("aksel-data-table__th", className)}
13
- />
35
+ style={{ width: size }}
36
+ >
37
+ {children}
38
+ {pinningHandler && (
39
+ <Button
40
+ onClick={pinningHandler}
41
+ size="small"
42
+ variant="secondary"
43
+ icon={
44
+ isPinned ? (
45
+ <PushPinFillIcon aria-hidden title="Fest kolonne" />
46
+ ) : (
47
+ <PushPinIcon aria-hidden title="Løstne kolonne" />
48
+ )
49
+ }
50
+ />
51
+ )}
52
+ {resizeHandler && (
53
+ <Button
54
+ onMouseDown={resizeHandler}
55
+ onMouseUp={resizeHandler}
56
+ className={cl("aksel-data-table__th-resize-handle")}
57
+ size="small"
58
+ variant="secondary"
59
+ icon={
60
+ <CaretLeftRightIcon aria-hidden title="Endre kolonnestørrelse" />
61
+ }
62
+ />
63
+ )}
64
+ </th>
14
65
  );
15
66
  },
16
67
  );
@@ -0,0 +1,34 @@
1
+ import React from "react";
2
+ import { Button, ButtonProps } from "../../../button";
3
+ import { Tooltip } from "../../../tooltip";
4
+
5
+ type DataToolbarButtonProps = Omit<
6
+ ButtonProps,
7
+ "variant" | "size" | "data-color"
8
+ > & {
9
+ /**
10
+ * Kort beskrivelse av knappens funksjon.
11
+ */
12
+ tooltip?: string; // TODO: Bør kanskje ikke være innebygget, men funker ikke å bruke Tooltip rundt Button rundt ActionMenu.Trigger i dag pga. props-forwarding i Tooltip
13
+ };
14
+
15
+ const DataToolbarButton = React.forwardRef<
16
+ HTMLButtonElement,
17
+ DataToolbarButtonProps
18
+ >(({ tooltip, ...rest }, ref) => {
19
+ const button = (
20
+ <Button
21
+ ref={ref}
22
+ {...rest}
23
+ variant="secondary"
24
+ size="small"
25
+ data-color="neutral"
26
+ iconPosition="right"
27
+ />
28
+ );
29
+ return tooltip ? <Tooltip content={tooltip}>{button}</Tooltip> : button;
30
+ });
31
+
32
+ export { DataToolbarButton };
33
+ export default DataToolbarButton;
34
+ export type { DataToolbarButtonProps };
@@ -1,5 +1,8 @@
1
1
  import React from "react";
2
2
  import { cl } from "../../../utils/helpers";
3
+ import DataToolbarButton, {
4
+ DataToolbarButtonProps,
5
+ } from "../button/DataToolbarButton";
3
6
  import {
4
7
  DataToolbarSearchField,
5
8
  type DataToolbarSearchFieldProps,
@@ -26,6 +29,17 @@ interface DataToolbarRootComponent extends React.ForwardRefExoticComponent<
26
29
  */
27
30
  SearchField: typeof DataToolbarSearchField;
28
31
 
32
+ /**
33
+ * @see 🏷️ {@link DataToolbarButtonProps}
34
+ * @example
35
+ * ```tsx
36
+ * <DataToolbar>
37
+ * <DataToolbar.Button />
38
+ * </DataToolbar>
39
+ * ```
40
+ */
41
+ Button: typeof DataToolbarButton;
42
+
29
43
  /**
30
44
  * @see 🏷️ {@link DataToolbarToggleButtonProps}
31
45
  * @example
@@ -54,12 +68,19 @@ const DataToolbar = React.forwardRef<HTMLDivElement, DataToolbarProps>(
54
68
  ) as DataToolbarRootComponent;
55
69
 
56
70
  DataToolbar.SearchField = DataToolbarSearchField;
71
+ DataToolbar.Button = DataToolbarButton;
57
72
  DataToolbar.ToggleButton = DataToolbarToggleButton;
58
73
 
59
- export { DataToolbar, DataToolbarSearchField, DataToolbarToggleButton };
74
+ export {
75
+ DataToolbar,
76
+ DataToolbarSearchField,
77
+ DataToolbarButton,
78
+ DataToolbarToggleButton,
79
+ };
60
80
  export default DataToolbar;
61
81
  export type {
62
82
  DataToolbarProps,
63
83
  DataToolbarSearchFieldProps,
84
+ DataToolbarButtonProps,
64
85
  DataToolbarToggleButtonProps,
65
86
  };
@@ -1,26 +1,27 @@
1
1
  import React from "react";
2
2
  import { Search, type SearchProps } from "../../../form/search";
3
+ import type { SearchNativeProps } from "../../../form/search/Search";
3
4
 
4
- type DataToolbarSearchFieldProps = Omit<
5
- React.HTMLAttributes<HTMLInputElement>,
6
- "data-color" | "size" | "type"
7
- > &
8
- Pick<SearchProps, "label" | "onChange">;
5
+ type DataToolbarSearchFieldProps = Omit<SearchNativeProps, "data-color"> &
6
+ Pick<SearchProps, "label" | "onChange">; // TODO: Vurder om label skal hardkodes (bør jo samsvare med placeholder...)
9
7
 
10
8
  const DataToolbarSearchField = React.forwardRef<
11
9
  HTMLInputElement,
12
10
  DataToolbarSearchFieldProps
13
11
  >(({ className, ...props }, ref) => {
12
+ // We need the wrapper because Search has width:100%
14
13
  return (
15
- <Search
16
- className={className}
17
- ref={ref}
18
- {...props}
19
- variant="simple"
20
- size="small"
21
- htmlSize="12"
22
- placeholder="Quick filter"
23
- />
14
+ <div>
15
+ <Search
16
+ className={className}
17
+ ref={ref}
18
+ {...props}
19
+ variant="simple"
20
+ size="small"
21
+ htmlSize="12"
22
+ placeholder="Hurtigfilter" // TODO: Oversett, og vurder om skal være overstyrbart
23
+ />
24
+ </div>
24
25
  );
25
26
  });
26
27
 
@@ -1,21 +1,25 @@
1
1
  import React from "react";
2
+ import { Button, ButtonProps } from "../../../button";
2
3
  import { cl, composeEventHandlers } from "../../../utils/helpers";
3
4
  import { useControllableState } from "../../../utils/hooks";
4
5
 
5
- type DataToolbarToggleButtonProps =
6
- React.ButtonHTMLAttributes<HTMLButtonElement> & {
6
+ type DataToolbarToggleButtonProps = Omit<
7
+ ButtonProps,
8
+ "variant" | "size" | "data-color" | "children"
9
+ > &
10
+ Required<Pick<ButtonProps, "icon">> & {
7
11
  /**
8
12
  * Indicates whether the toggle button is pressed or not.
9
13
  * @default false
10
14
  */
11
15
  isPressed?: boolean;
12
16
  /**
13
- * Default uncontrolled pressed state
17
+ * Default uncontrolled pressed state.
14
18
  * @default false
15
19
  */
16
20
  defaultPressed?: boolean;
17
21
  /**
18
- * Callback for new pressed state
22
+ * Callback for new pressed state.
19
23
  */
20
24
  onPressChange?: (isPressed: boolean) => void;
21
25
  };
@@ -42,10 +46,13 @@ const DataToolbarToggleButton = React.forwardRef<
42
46
  });
43
47
 
44
48
  return (
45
- <button
49
+ <Button
46
50
  className={cl("aksel-data-toolbar__toggle-button", className)}
47
51
  ref={ref}
48
52
  {...props}
53
+ variant="secondary"
54
+ size="small"
55
+ data-color="neutral"
49
56
  aria-pressed={pressed}
50
57
  onClick={composeEventHandlers(onClick, () =>
51
58
  setPressed((oldState) => !oldState),
@@ -6,7 +6,11 @@ import { cl } from "../../utils/helpers";
6
6
  import { useControllableState, useMergeRefs } from "../../utils/hooks";
7
7
  import { useI18n } from "../../utils/i18n/i18n.hooks";
8
8
  import { DateDialog } from "../Date.Dialog";
9
- import { DateInputContextProvider, DatePickerInput } from "../Date.Input";
9
+ import {
10
+ DateInputContextProvider,
11
+ DateInputProps,
12
+ DatePickerInput,
13
+ } from "../Date.Input";
10
14
  import {
11
15
  DateTranslationContextProvider,
12
16
  getTranslations,
@@ -17,13 +21,15 @@ import {
17
21
  DatePickerDefaultProps,
18
22
  } from "./DatePicker.types";
19
23
  import { ReactDayPicker } from "./parts/DatePicker.RDP";
20
- import DatePickerStandalone from "./parts/DatePicker.Standalone";
24
+ import DatePickerStandalone, {
25
+ DatePickerStandaloneProps,
26
+ } from "./parts/DatePicker.Standalone";
21
27
 
22
- export type DatePickerProps = DatePickerDefaultProps & ConditionalModeProps;
28
+ type DatePickerProps = DatePickerDefaultProps & ConditionalModeProps;
23
29
 
24
- interface DatePickerComponent
25
- extends React.ForwardRefExoticComponent<DatePickerProps> {
30
+ interface DatePickerComponent extends React.ForwardRefExoticComponent<DatePickerProps> {
26
31
  /**
32
+ * @see 🏷️ {@link DatePickerStandaloneProps}
27
33
  * @example
28
34
  * ```jsx
29
35
  * <DatePicker.Standalone
@@ -175,3 +181,5 @@ DatePicker.Standalone = DatePickerStandalone;
175
181
  DatePicker.Input = DatePickerInput;
176
182
 
177
183
  export default DatePicker;
184
+ export { DatePickerStandalone, DatePickerInput };
185
+ export type { DatePickerProps, DatePickerStandaloneProps, DateInputProps };
@@ -1,5 +1,14 @@
1
1
  "use client";
2
- export { default as DatePicker, type DatePickerProps } from "./DatePicker";
2
+ export {
3
+ default as DatePicker,
4
+ DatePickerStandalone,
5
+ DatePickerInput,
6
+ } from "./DatePicker";
7
+ export type {
8
+ DatePickerProps,
9
+ DatePickerStandaloneProps,
10
+ DateInputProps,
11
+ } from "./DatePicker";
3
12
  export {
4
13
  useDatepicker,
5
14
  type DateValidationT,
@@ -10,8 +19,3 @@ export {
10
19
  type RangeValidationT,
11
20
  type UseRangeDatepickerOptions,
12
21
  } from "./hooks/useRangeDatepicker";
13
- export {
14
- DatePickerStandalone,
15
- type DatePickerStandaloneProps,
16
- } from "./parts/DatePicker.Standalone";
17
- export { DatePickerInput, type DateInputProps } from "../Date.Input";
@@ -4,7 +4,11 @@ import { cl } from "../../utils/helpers";
4
4
  import { useControllableState, useMergeRefs } from "../../utils/hooks";
5
5
  import { useDateLocale, useI18n } from "../../utils/i18n/i18n.hooks";
6
6
  import { DateDialog } from "../Date.Dialog";
7
- import { DateInputContextProvider, MonthPickerInput } from "../Date.Input";
7
+ import {
8
+ DateInputContextProvider,
9
+ DateInputProps,
10
+ MonthPickerInput,
11
+ } from "../Date.Input";
8
12
  import {
9
13
  DateTranslationContextProvider,
10
14
  getLocaleFromString,
@@ -13,12 +17,15 @@ import {
13
17
  import { MonthPickerProvider } from "./MonthPicker.context";
14
18
  import { MonthPickerProps } from "./MonthPicker.types";
15
19
  import { MonthPickerCaption } from "./parts/MonthPicker.Caption";
16
- import { MonthPickerStandalone } from "./parts/MonthPicker.Standalone";
20
+ import {
21
+ MonthPickerStandalone,
22
+ MonthPickerStandaloneProps,
23
+ } from "./parts/MonthPicker.Standalone";
17
24
  import { MonthPickerTable } from "./parts/MonthPicker.Table";
18
25
 
19
- interface MonthPickerComponent
20
- extends React.ForwardRefExoticComponent<MonthPickerProps> {
26
+ interface MonthPickerComponent extends React.ForwardRefExoticComponent<MonthPickerProps> {
21
27
  /**
28
+ * @see 🏷️ {@link MonthPickerStandaloneProps}
22
29
  * @example
23
30
  * ```jsx
24
31
  * <MonthPicker.Standalone
@@ -174,3 +181,5 @@ MonthPicker.Standalone = MonthPickerStandalone;
174
181
  MonthPicker.Input = MonthPickerInput;
175
182
 
176
183
  export default MonthPicker;
184
+ export { MonthPickerStandalone, MonthPickerInput };
185
+ export type { MonthPickerProps, MonthPickerStandaloneProps, DateInputProps };
@@ -1,9 +1,11 @@
1
1
  "use client";
2
2
  export { useMonthpicker, type MonthValidationT } from "./hooks/useMonthPicker";
3
- export { default as MonthPicker } from "./MonthPicker";
4
- export type { MonthPickerProps } from "./MonthPicker.types";
5
3
  export {
4
+ default as MonthPicker,
6
5
  MonthPickerStandalone,
7
- type MonthPickerStandaloneProps,
8
- } from "./parts/MonthPicker.Standalone";
9
- export { MonthPickerInput } from "../Date.Input";
6
+ MonthPickerInput,
7
+ } from "./MonthPicker";
8
+ export type {
9
+ MonthPickerProps,
10
+ MonthPickerStandaloneProps,
11
+ } from "./MonthPicker";
@@ -1,19 +1,23 @@
1
1
  "use client";
2
- export { default as Dialog } from "./root/DialogRoot";
3
- export type { DialogProps } from "./root/DialogRoot";
4
- export { DialogTrigger } from "./trigger/DialogTrigger";
5
- export type { DialogTriggerProps } from "./trigger/DialogTrigger";
6
- export { DialogPopup } from "./popup/DialogPopup";
7
- export type { DialogPopupProps } from "./popup/DialogPopup";
8
- export { DialogCloseTrigger } from "./close-trigger/DialogCloseTrigger";
9
- export type { DialogCloseTriggerProps } from "./close-trigger/DialogCloseTrigger";
10
- export { DialogHeader } from "./header/DialogHeader";
11
- export type { DialogHeaderProps } from "./header/DialogHeader";
12
- export { DialogFooter } from "./footer/DialogFooter";
13
- export type { DialogFooterProps } from "./footer/DialogFooter";
14
- export { DialogTitle } from "./title/DialogTitle";
15
- export type { DialogTitleProps } from "./title/DialogTitle";
16
- export { DialogDescription } from "./description/DialogDescription";
17
- export type { DialogDescriptionProps } from "./description/DialogDescription";
18
- export { DialogBody } from "./body/DialogBody";
19
- export type { DialogBodyProps } from "./body/DialogBody";
2
+ export {
3
+ default as Dialog,
4
+ DialogTrigger,
5
+ DialogPopup,
6
+ DialogCloseTrigger,
7
+ DialogHeader,
8
+ DialogFooter,
9
+ DialogTitle,
10
+ DialogDescription,
11
+ DialogBody,
12
+ } from "./root/DialogRoot";
13
+ export type {
14
+ DialogProps,
15
+ DialogTriggerProps,
16
+ DialogPopupProps,
17
+ DialogCloseTriggerProps,
18
+ DialogHeaderProps,
19
+ DialogFooterProps,
20
+ DialogTitleProps,
21
+ DialogDescriptionProps,
22
+ DialogBodyProps,
23
+ } from "./root/DialogRoot";
@@ -5,14 +5,20 @@ import {
5
5
  useEventCallback,
6
6
  useTransitionStatus,
7
7
  } from "../../utils/hooks";
8
- import { DialogBody } from "../body/DialogBody";
9
- import { DialogCloseTrigger } from "../close-trigger/DialogCloseTrigger";
10
- import { DialogDescription } from "../description/DialogDescription";
11
- import { DialogFooter } from "../footer/DialogFooter";
12
- import { DialogHeader } from "../header/DialogHeader";
13
- import { DialogPopup } from "../popup/DialogPopup";
14
- import { DialogTitle } from "../title/DialogTitle";
15
- import { DialogTrigger } from "../trigger/DialogTrigger";
8
+ import { DialogBody, DialogBodyProps } from "../body/DialogBody";
9
+ import {
10
+ DialogCloseTrigger,
11
+ DialogCloseTriggerProps,
12
+ } from "../close-trigger/DialogCloseTrigger";
13
+ import {
14
+ DialogDescription,
15
+ DialogDescriptionProps,
16
+ } from "../description/DialogDescription";
17
+ import { DialogFooter, DialogFooterProps } from "../footer/DialogFooter";
18
+ import { DialogHeader, DialogHeaderProps } from "../header/DialogHeader";
19
+ import { DialogPopup, DialogPopupProps } from "../popup/DialogPopup";
20
+ import { DialogTitle, DialogTitleProps } from "../title/DialogTitle";
21
+ import { DialogTrigger, DialogTriggerProps } from "../trigger/DialogTrigger";
16
22
  import { DialogContextProvider, useDialogContext } from "./DialogRoot.context";
17
23
 
18
24
  interface DialogProps {
@@ -56,6 +62,7 @@ interface DialogComponent extends React.FC<DialogProps> {
56
62
  * ```
57
63
  */
58
64
  Trigger: typeof DialogTrigger;
65
+
59
66
  /**
60
67
  * @see 🏷️ {@link DialogCloseTriggerProps}
61
68
  * @example
@@ -70,6 +77,7 @@ interface DialogComponent extends React.FC<DialogProps> {
70
77
  * ```
71
78
  */
72
79
  CloseTrigger: typeof DialogCloseTrigger;
80
+
73
81
  /**
74
82
  * @see 🏷️ {@link DialogPopupProps}
75
83
  * @example
@@ -295,4 +303,24 @@ Dialog.Footer = DialogFooter;
295
303
  Dialog.Popup = DialogPopup;
296
304
 
297
305
  export default Dialog;
298
- export type { DialogProps };
306
+ export {
307
+ DialogTrigger,
308
+ DialogCloseTrigger,
309
+ DialogHeader,
310
+ DialogTitle,
311
+ DialogDescription,
312
+ DialogBody,
313
+ DialogFooter,
314
+ DialogPopup,
315
+ };
316
+ export type {
317
+ DialogProps,
318
+ DialogTriggerProps,
319
+ DialogCloseTriggerProps,
320
+ DialogHeaderProps,
321
+ DialogTitleProps,
322
+ DialogDescriptionProps,
323
+ DialogBodyProps,
324
+ DialogFooterProps,
325
+ DialogPopupProps,
326
+ };
@@ -1,4 +1,4 @@
1
- import React, { forwardRef, useRef } from "react";
1
+ import React, { forwardRef } from "react";
2
2
  import type { AkselColor } from "../types";
3
3
  import type { OverridableComponent } from "../utils-external";
4
4
  import { cl } from "../utils/helpers";
@@ -19,10 +19,9 @@ import {
19
19
  } from "./ExpansionCardTitle";
20
20
  import { ExpansionCardContext } from "./context";
21
21
 
22
- interface ExpansionCardComponent
23
- extends React.ForwardRefExoticComponent<
24
- ExpansionCardProps & React.RefAttributes<HTMLDivElement>
25
- > {
22
+ interface ExpansionCardComponent extends React.ForwardRefExoticComponent<
23
+ ExpansionCardProps & React.RefAttributes<HTMLDivElement>
24
+ > {
26
25
  /**
27
26
  * @see 🏷️ {@link ExpansionCardHeaderProps}
28
27
  */
@@ -48,20 +47,23 @@ interface ExpansionCardComponent
48
47
  >;
49
48
  }
50
49
 
51
- interface ExpansionCardCommonProps
52
- extends Omit<React.HTMLAttributes<HTMLDivElement>, "onToggle"> {
50
+ interface ExpansionCardCommonProps extends Omit<
51
+ React.HTMLAttributes<HTMLDivElement>,
52
+ "onToggle"
53
+ > {
53
54
  children: React.ReactNode;
54
55
  /**
55
- * Callback for when Card is toggled open/closed
56
+ * Callback for when Card is opened/closed.
56
57
  */
57
58
  onToggle?: (open: boolean) => void;
58
59
  /**
59
- * Controlled open-state
60
- * Using this removes automatic control of open-state
60
+ * Controlled open-state.
61
+ *
62
+ * Using this removes automatic control of open-state.
61
63
  */
62
64
  open?: boolean;
63
65
  /**
64
- * Defaults to open if not controlled
66
+ * The open state when initially rendered. Use when you do not need to control the open state.
65
67
  * @default false
66
68
  */
67
69
  defaultOpen?: boolean;
@@ -102,7 +104,7 @@ export type ExpansionCardProps = ExpansionCardCommonProps &
102
104
  *
103
105
  * @example
104
106
  * ```jsx
105
- * <ExpansionCard aria-label="default-demo">
107
+ * <ExpansionCard aria-label="Utbetaling av sykepenger">
106
108
  * <ExpansionCard.Header>
107
109
  * <ExpansionCard.Title>Utbetaling av sykepenger</ExpansionCard.Title>
108
110
  * </ExpansionCard.Header>
@@ -125,14 +127,9 @@ export const ExpansionCard = forwardRef<HTMLDivElement, ExpansionCardProps>(
125
127
  },
126
128
  ref,
127
129
  ) => {
128
- const shouldFade = useRef<boolean>(!(Boolean(open) || defaultOpen));
129
-
130
130
  const [_open, _setOpen] = useControllableState({
131
131
  value: open,
132
- onChange: (newValue) => {
133
- onToggle?.(newValue);
134
- shouldFade.current = true;
135
- },
132
+ onChange: onToggle,
136
133
  defaultValue: defaultOpen,
137
134
  });
138
135
 
@@ -151,9 +148,6 @@ export const ExpansionCard = forwardRef<HTMLDivElement, ExpansionCardProps>(
151
148
  "aksel-expansioncard",
152
149
  className,
153
150
  `aksel-expansioncard--${size}`,
154
- {
155
- "aksel-expansioncard--no-animation": !shouldFade.current,
156
- },
157
151
  )}
158
152
  ref={ref}
159
153
  />
@@ -14,10 +14,9 @@ interface FileUploadProps extends HTMLAttributes<HTMLDivElement> {
14
14
  translations?: ComponentTranslation<"FileUpload">;
15
15
  }
16
16
 
17
- interface FileUploadComponent
18
- extends React.ForwardRefExoticComponent<
19
- FileUploadProps & React.RefAttributes<HTMLDivElement>
20
- > {
17
+ interface FileUploadComponent extends React.ForwardRefExoticComponent<
18
+ FileUploadProps & React.RefAttributes<HTMLDivElement>
19
+ > {
21
20
  /**
22
21
  * Framed area to drag-n-drop files, upload files with button-click or copy-paste.
23
22
  * @example
@@ -64,7 +63,7 @@ interface FileUploadComponent
64
63
  * Multiple items can be semantically grouped as a list.
65
64
  * ```jsx
66
65
  * <FileUpload>
67
- * <VStack gap="4" as="ul">
66
+ * <VStack gap="space-16" as="ul">
68
67
  * <FileUpload.Item as="li" file={file} />
69
68
  * <FileUpload.Item as="li" file={file2} />
70
69
  * <FileUpload.Item as="li" file={file3} status="uploading" />
@@ -117,7 +116,7 @@ interface FileUploadComponent
117
116
  * @example
118
117
  * Items
119
118
  * ```jsx
120
- * <VStack gap="4" as="ul">
119
+ * <VStack gap="space-16" as="ul">
121
120
  * <FileUpload.Item as="li" file={myFile} />
122
121
  * <FileUpload.Item as="li" file={mySecondFile} />
123
122
  * </VStack>
@@ -18,6 +18,11 @@ import { FormFieldProps, useFormField } from "../useFormField";
18
18
  import SearchButton, { SearchButtonType } from "./SearchButton";
19
19
  import { SearchContext } from "./context";
20
20
 
21
+ export type SearchNativeProps = Omit<
22
+ InputHTMLAttributes<HTMLInputElement>,
23
+ "size" | "onChange" | "type"
24
+ >;
25
+
21
26
  export type SearchClearEvent =
22
27
  | {
23
28
  trigger: "Click";
@@ -26,8 +31,7 @@ export type SearchClearEvent =
26
31
  | { trigger: "Escape"; event: React.KeyboardEvent<HTMLDivElement> };
27
32
 
28
33
  export interface SearchProps
29
- extends Omit<FormFieldProps, "readOnly">,
30
- Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "onChange" | "type"> {
34
+ extends Omit<FormFieldProps, "readOnly">, SearchNativeProps {
31
35
  children?: React.ReactNode;
32
36
  /**
33
37
  * Search label.
@@ -82,10 +86,9 @@ export interface SearchProps
82
86
  "data-color"?: Exclude<AkselColor, AkselStatusColorRole>;
83
87
  }
84
88
 
85
- interface SearchComponent
86
- extends React.ForwardRefExoticComponent<
87
- SearchProps & React.RefAttributes<HTMLDivElement>
88
- > {
89
+ interface SearchComponent extends React.ForwardRefExoticComponent<
90
+ SearchProps & React.RefAttributes<HTMLDivElement>
91
+ > {
89
92
  Button: SearchButtonType;
90
93
  }
91
94