@navikt/ds-react 6.5.0 → 6.6.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 (200) hide show
  1. package/cjs/collapsible/Collapsible.context.d.ts +48 -0
  2. package/cjs/collapsible/Collapsible.context.js +10 -0
  3. package/cjs/collapsible/Collapsible.context.js.map +1 -0
  4. package/cjs/collapsible/Collapsible.d.ts +48 -0
  5. package/cjs/collapsible/Collapsible.js +91 -0
  6. package/cjs/collapsible/Collapsible.js.map +1 -0
  7. package/cjs/collapsible/Collapsible.types.d.ts +19 -0
  8. package/cjs/collapsible/Collapsible.types.js +3 -0
  9. package/cjs/collapsible/Collapsible.types.js.map +1 -0
  10. package/cjs/collapsible/index.d.ts +3 -0
  11. package/cjs/collapsible/index.js +14 -0
  12. package/cjs/collapsible/index.js.map +1 -0
  13. package/cjs/collapsible/parts/Collapsible.Content.d.ts +10 -0
  14. package/cjs/collapsible/parts/Collapsible.Content.js +48 -0
  15. package/cjs/collapsible/parts/Collapsible.Content.js.map +1 -0
  16. package/cjs/collapsible/parts/Collapsible.Trigger.d.ts +10 -0
  17. package/cjs/collapsible/parts/Collapsible.Trigger.js +49 -0
  18. package/cjs/collapsible/parts/Collapsible.Trigger.js.map +1 -0
  19. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -4
  20. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  21. package/cjs/form/combobox/Input/Input.js +6 -1
  22. package/cjs/form/combobox/Input/Input.js.map +1 -1
  23. package/cjs/form/form-summary/FormSummary.d.ts +82 -0
  24. package/cjs/form/form-summary/FormSummary.js +81 -0
  25. package/cjs/form/form-summary/FormSummary.js.map +1 -0
  26. package/cjs/form/form-summary/FormSummaryAnswer.d.ts +11 -0
  27. package/cjs/form/form-summary/FormSummaryAnswer.js +25 -0
  28. package/cjs/form/form-summary/FormSummaryAnswer.js.map +1 -0
  29. package/cjs/form/form-summary/FormSummaryAnswers.d.ts +9 -0
  30. package/cjs/form/form-summary/FormSummaryAnswers.js +48 -0
  31. package/cjs/form/form-summary/FormSummaryAnswers.js.map +1 -0
  32. package/cjs/form/form-summary/FormSummaryEditLink.d.ts +17 -0
  33. package/cjs/form/form-summary/FormSummaryEditLink.js +49 -0
  34. package/cjs/form/form-summary/FormSummaryEditLink.js.map +1 -0
  35. package/cjs/form/form-summary/FormSummaryHeader.d.ts +9 -0
  36. package/cjs/form/form-summary/FormSummaryHeader.js +48 -0
  37. package/cjs/form/form-summary/FormSummaryHeader.js.map +1 -0
  38. package/cjs/form/form-summary/FormSummaryHeading.d.ts +14 -0
  39. package/cjs/form/form-summary/FormSummaryHeading.js +31 -0
  40. package/cjs/form/form-summary/FormSummaryHeading.js.map +1 -0
  41. package/cjs/form/form-summary/FormSummaryLabel.d.ts +6 -0
  42. package/cjs/form/form-summary/FormSummaryLabel.js +45 -0
  43. package/cjs/form/form-summary/FormSummaryLabel.js.map +1 -0
  44. package/cjs/form/form-summary/FormSummaryValue.d.ts +6 -0
  45. package/cjs/form/form-summary/FormSummaryValue.js +49 -0
  46. package/cjs/form/form-summary/FormSummaryValue.js.map +1 -0
  47. package/cjs/form/form-summary/index.d.ts +8 -0
  48. package/cjs/form/form-summary/index.js +24 -0
  49. package/cjs/form/form-summary/index.js.map +1 -0
  50. package/cjs/index.d.ts +3 -2
  51. package/cjs/index.js +5 -3
  52. package/cjs/index.js.map +1 -1
  53. package/cjs/layout/stack/Spacer.js +1 -1
  54. package/cjs/layout/stack/Spacer.js.map +1 -1
  55. package/cjs/util/hooks/descendants/descendant.js +10 -1
  56. package/cjs/util/hooks/descendants/descendant.js.map +1 -1
  57. package/cjs/util/hooks/descendants/useDescendant.js +0 -5
  58. package/cjs/util/hooks/descendants/useDescendant.js.map +1 -1
  59. package/esm/collapsible/Collapsible.context.d.ts +48 -0
  60. package/esm/collapsible/Collapsible.context.js +6 -0
  61. package/esm/collapsible/Collapsible.context.js.map +1 -0
  62. package/esm/collapsible/Collapsible.d.ts +48 -0
  63. package/esm/collapsible/Collapsible.js +62 -0
  64. package/esm/collapsible/Collapsible.js.map +1 -0
  65. package/esm/collapsible/Collapsible.types.d.ts +19 -0
  66. package/esm/collapsible/Collapsible.types.js +2 -0
  67. package/esm/collapsible/Collapsible.types.js.map +1 -0
  68. package/esm/collapsible/index.d.ts +3 -0
  69. package/esm/collapsible/index.js +5 -0
  70. package/esm/collapsible/index.js.map +1 -0
  71. package/esm/collapsible/parts/Collapsible.Content.d.ts +10 -0
  72. package/esm/collapsible/parts/Collapsible.Content.js +22 -0
  73. package/esm/collapsible/parts/Collapsible.Content.js.map +1 -0
  74. package/esm/collapsible/parts/Collapsible.Trigger.d.ts +10 -0
  75. package/esm/collapsible/parts/Collapsible.Trigger.js +23 -0
  76. package/esm/collapsible/parts/Collapsible.Trigger.js.map +1 -0
  77. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -4
  78. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  79. package/esm/form/combobox/Input/Input.js +6 -1
  80. package/esm/form/combobox/Input/Input.js.map +1 -1
  81. package/esm/form/form-summary/FormSummary.d.ts +82 -0
  82. package/esm/form/form-summary/FormSummary.js +52 -0
  83. package/esm/form/form-summary/FormSummary.js.map +1 -0
  84. package/esm/form/form-summary/FormSummaryAnswer.d.ts +11 -0
  85. package/esm/form/form-summary/FormSummaryAnswer.js +19 -0
  86. package/esm/form/form-summary/FormSummaryAnswer.js.map +1 -0
  87. package/esm/form/form-summary/FormSummaryAnswers.d.ts +9 -0
  88. package/esm/form/form-summary/FormSummaryAnswers.js +19 -0
  89. package/esm/form/form-summary/FormSummaryAnswers.js.map +1 -0
  90. package/esm/form/form-summary/FormSummaryEditLink.d.ts +17 -0
  91. package/esm/form/form-summary/FormSummaryEditLink.js +20 -0
  92. package/esm/form/form-summary/FormSummaryEditLink.js.map +1 -0
  93. package/esm/form/form-summary/FormSummaryHeader.d.ts +9 -0
  94. package/esm/form/form-summary/FormSummaryHeader.js +19 -0
  95. package/esm/form/form-summary/FormSummaryHeader.js.map +1 -0
  96. package/esm/form/form-summary/FormSummaryHeading.d.ts +14 -0
  97. package/esm/form/form-summary/FormSummaryHeading.js +5 -0
  98. package/esm/form/form-summary/FormSummaryHeading.js.map +1 -0
  99. package/esm/form/form-summary/FormSummaryLabel.d.ts +6 -0
  100. package/esm/form/form-summary/FormSummaryLabel.js +19 -0
  101. package/esm/form/form-summary/FormSummaryLabel.js.map +1 -0
  102. package/esm/form/form-summary/FormSummaryValue.d.ts +6 -0
  103. package/esm/form/form-summary/FormSummaryValue.js +20 -0
  104. package/esm/form/form-summary/FormSummaryValue.js.map +1 -0
  105. package/esm/form/form-summary/index.d.ts +8 -0
  106. package/esm/form/form-summary/index.js +10 -0
  107. package/esm/form/form-summary/index.js.map +1 -0
  108. package/esm/index.d.ts +3 -2
  109. package/esm/index.js +2 -1
  110. package/esm/index.js.map +1 -1
  111. package/esm/layout/stack/Spacer.js +1 -1
  112. package/esm/layout/stack/Spacer.js.map +1 -1
  113. package/esm/util/hooks/descendants/descendant.js +10 -1
  114. package/esm/util/hooks/descendants/descendant.js.map +1 -1
  115. package/esm/util/hooks/descendants/useDescendant.js +0 -5
  116. package/esm/util/hooks/descendants/useDescendant.js.map +1 -1
  117. package/package.json +15 -4
  118. package/src/collapsible/Collapsible.context.tsx +32 -0
  119. package/src/collapsible/Collapsible.tsx +100 -0
  120. package/src/collapsible/Collapsible.types.ts +19 -0
  121. package/src/collapsible/index.ts +10 -0
  122. package/src/collapsible/parts/Collapsible.Content.tsx +39 -0
  123. package/src/collapsible/parts/Collapsible.Trigger.tsx +42 -0
  124. package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +9 -1
  125. package/src/form/combobox/Input/Input.tsx +5 -0
  126. package/src/form/form-summary/FormSummary.tsx +106 -0
  127. package/src/form/form-summary/FormSummaryAnswer.tsx +27 -0
  128. package/src/form/form-summary/FormSummaryAnswers.tsx +25 -0
  129. package/src/form/form-summary/FormSummaryEditLink.tsx +35 -0
  130. package/src/form/form-summary/FormSummaryHeader.tsx +25 -0
  131. package/src/form/form-summary/FormSummaryHeading.tsx +23 -0
  132. package/src/form/form-summary/FormSummaryLabel.tsx +17 -0
  133. package/src/form/form-summary/FormSummaryValue.tsx +24 -0
  134. package/src/form/form-summary/index.ts +30 -0
  135. package/src/index.ts +16 -15
  136. package/src/layout/stack/Spacer.tsx +1 -1
  137. package/src/util/hooks/descendants/descendant.ts +15 -1
  138. package/src/util/hooks/descendants/useDescendant.tsx +0 -5
  139. package/src/accordion/accordion.stories.tsx +0 -286
  140. package/src/alert/alert.stories.tsx +0 -306
  141. package/src/button/button.stories.tsx +0 -185
  142. package/src/chat/chat.stories.tsx +0 -341
  143. package/src/chips/chips.stories.tsx +0 -260
  144. package/src/copybutton/copy-button.stories.tsx +0 -261
  145. package/src/date/datepicker/datepicker.stories.tsx +0 -614
  146. package/src/date/monthpicker/monthpicker.stories.tsx +0 -221
  147. package/src/dropdown/dropdown.stories.tsx +0 -124
  148. package/src/expansion-card/expansion-card.stories.tsx +0 -282
  149. package/src/form/checkbox/checkbox.stories.tsx +0 -281
  150. package/src/form/combobox/combobox.stories.tsx +0 -626
  151. package/src/form/confirmation-panel/confirmation-panel.stories.tsx +0 -128
  152. package/src/form/error-summary/error-summary.stories.tsx +0 -81
  153. package/src/form/fieldset/fieldset.stories.tsx +0 -157
  154. package/src/form/file-upload/file-upload-dropzone.stories.tsx +0 -123
  155. package/src/form/file-upload/file-upload-item.stories.tsx +0 -148
  156. package/src/form/file-upload/file-upload.stories.tsx +0 -248
  157. package/src/form/radio/radio.stories.tsx +0 -230
  158. package/src/form/search/search.stories.tsx +0 -238
  159. package/src/form/select/select.stories.tsx +0 -172
  160. package/src/form/switch/switch.stories.tsx +0 -171
  161. package/src/form/textarea/textarea.stories.tsx +0 -254
  162. package/src/form/textfield/text-field.stories.tsx +0 -143
  163. package/src/guide-panel/guidepanel.stories.tsx +0 -90
  164. package/src/help-text/help-text.stories.tsx +0 -91
  165. package/src/internal-header/header.stories.tsx +0 -229
  166. package/src/layout/bleed/Bleed.stories.tsx +0 -395
  167. package/src/layout/box/Box.stories.tsx +0 -380
  168. package/src/layout/grid/h-grid.stories.tsx +0 -122
  169. package/src/layout/page/Page.stories.tsx +0 -271
  170. package/src/layout/responsive/hide.stories.tsx +0 -80
  171. package/src/layout/responsive/show.stories.tsx +0 -80
  172. package/src/layout/sidemal-test/navno-sidemal.stories.tsx +0 -69
  173. package/src/layout/stack/stack.stories.tsx +0 -183
  174. package/src/link/stories/link.stories.tsx +0 -304
  175. package/src/link-panel/link-panel.stories.tsx +0 -59
  176. package/src/list/list.stories.tsx +0 -280
  177. package/src/loader/loader.stories.tsx +0 -82
  178. package/src/modal/modal.stories.tsx +0 -391
  179. package/src/pagination/pagination.stories.tsx +0 -110
  180. package/src/popover/popover.stories.tsx +0 -113
  181. package/src/portal/Portal.stories.tsx +0 -102
  182. package/src/read-more/readmore.stories.tsx +0 -91
  183. package/src/skeleton/skeleton.stories.tsx +0 -130
  184. package/src/stepper/stepper.stories.tsx +0 -200
  185. package/src/table/stories/table-1.stories.tsx +0 -292
  186. package/src/table/stories/table-2-expandable.stories.tsx +0 -298
  187. package/src/table/stories/table-3-async.stories.tsx +0 -179
  188. package/src/table/stories/tests/table.stories.tsx +0 -102
  189. package/src/tabs/Tabs.stories.tsx +0 -311
  190. package/src/tag/tag.stories.tsx +0 -126
  191. package/src/timeline/timeline.stories.tsx +0 -445
  192. package/src/toggle-group/ToggleGroup.stories.tsx +0 -198
  193. package/src/tooltip/tooltip.stories.tsx +0 -101
  194. package/src/typography/stories/bodylong.stories.tsx +0 -209
  195. package/src/typography/stories/bodyshort.stories.tsx +0 -208
  196. package/src/typography/stories/detail.stories.tsx +0 -115
  197. package/src/typography/stories/error-message.stories.tsx +0 -122
  198. package/src/typography/stories/heading.stories.tsx +0 -169
  199. package/src/typography/stories/label.stories.tsx +0 -131
  200. package/src/util/hooks/descendants/descendant.stories.tsx +0 -147
@@ -1,292 +0,0 @@
1
- import React, { useState } from "react";
2
- import { Table, TableProps } from "../";
3
- import { Button } from "../../button";
4
- import { Checkbox } from "../../form/checkbox";
5
- import { VStack } from "../../layout/stack";
6
- import {
7
- Expandable,
8
- ExpandableLarge,
9
- ExpandableSmall,
10
- } from "./table-2-expandable.stories";
11
-
12
- export default {
13
- title: "ds-react/Table",
14
- component: Table,
15
- parameters: {
16
- chromatic: { disable: true },
17
- },
18
- };
19
-
20
- interface Props extends TableProps {
21
- button?: boolean;
22
- shadeOnHover?: boolean;
23
- }
24
-
25
- const TableComponent = ({ button, shadeOnHover, ...rest }: Props) => (
26
- <Table {...rest}>
27
- <Table.Header>
28
- <Table.Row>
29
- {button && <Table.HeaderCell>Action</Table.HeaderCell>}
30
- <Table.HeaderCell>ID</Table.HeaderCell>
31
- <Table.HeaderCell>Fornavn</Table.HeaderCell>
32
- <Table.HeaderCell textSize="medium">Etternavn</Table.HeaderCell>
33
- <Table.HeaderCell textSize="small">Rolle</Table.HeaderCell>
34
- </Table.Row>
35
- </Table.Header>
36
- <Table.Body>
37
- <Table.Row shadeOnHover={shadeOnHover}>
38
- {button && (
39
- <Table.DataCell
40
- style={{
41
- paddingTop: 6,
42
- paddingBottom: 6,
43
- }}
44
- >
45
- <Button size="xsmall">Click me!</Button>
46
- </Table.DataCell>
47
- )}
48
- <Table.HeaderCell>1</Table.HeaderCell>
49
- <Table.DataCell>Jean-Luc</Table.DataCell>
50
- <Table.DataCell>Picard</Table.DataCell>
51
- <Table.DataCell>Kaptein</Table.DataCell>
52
- </Table.Row>
53
- <Table.Row shadeOnHover={shadeOnHover}>
54
- {button && (
55
- <Table.DataCell
56
- style={{
57
- paddingTop: 6,
58
- paddingBottom: 6,
59
- }}
60
- >
61
- <Button size="xsmall">Click me!</Button>
62
- </Table.DataCell>
63
- )}
64
- <Table.HeaderCell>2</Table.HeaderCell>
65
- <Table.DataCell>William</Table.DataCell>
66
- <Table.DataCell>Riker</Table.DataCell>
67
- <Table.DataCell>Kommandør</Table.DataCell>
68
- </Table.Row>
69
- <Table.Row shadeOnHover={shadeOnHover}>
70
- {button && (
71
- <Table.DataCell
72
- style={{
73
- paddingTop: 6,
74
- paddingBottom: 6,
75
- }}
76
- >
77
- <Button size="xsmall">Click me!</Button>
78
- </Table.DataCell>
79
- )}
80
- <Table.HeaderCell>3</Table.HeaderCell>
81
- <Table.DataCell>Geordi</Table.DataCell>
82
- <Table.DataCell textSize="medium">La Forge</Table.DataCell>
83
- <Table.DataCell textSize="small">Sjefsingeniør</Table.DataCell>
84
- </Table.Row>
85
- </Table.Body>
86
- </Table>
87
- );
88
-
89
- export const Default = () => <TableComponent />;
90
- export const Zebra = () => <TableComponent zebraStripes />;
91
- export const NoShadeOnHover = () => <TableComponent shadeOnHover={false} />;
92
- export const ZebraNoShadeOnHover = () => (
93
- <TableComponent zebraStripes shadeOnHover={false} />
94
- );
95
- export const SizeLarge = () => <TableComponent size="large" />;
96
- export const SizeMedium = () => <TableComponent size="medium" />;
97
- export const SizeSmall = () => <TableComponent size="small" />;
98
-
99
- export const Buttons = () => <TableComponent size="small" button />;
100
-
101
- export const WithDivs = () => {
102
- return (
103
- <div className="navds-table" role="table">
104
- <div className="navds-table__header" role="rowgroup">
105
- <div className="navds-table__row" role="row">
106
- <div className="navds-table__header-cell" role="columnheader">
107
- Fornavn
108
- </div>
109
- <div className="navds-table__header-cell" role="columnheader">
110
- Etternavn
111
- </div>
112
- <div className="navds-table__header-cell" role="columnheader">
113
- Rolle
114
- </div>
115
- </div>
116
- </div>
117
- <div className="navds-table__body" role="rowgroup">
118
- <div className="navds-table__row" role="row">
119
- <div className="navds-table__data-cell" role="cell">
120
- Jean-Luc
121
- </div>
122
- <div className="navds-table__data-cell" role="cell">
123
- Picard
124
- </div>
125
- <div className="navds-table__data-cell" role="cell">
126
- Kaptein
127
- </div>
128
- </div>
129
- <div className="navds-table__row" role="row">
130
- <div className="navds-table__data-cell" role="cell">
131
- William
132
- </div>
133
- <div className="navds-table__data-cell" role="cell">
134
- Riker
135
- </div>
136
- <div className="navds-table__data-cell" role="cell">
137
- Kommandør
138
- </div>
139
- </div>
140
- <div className="navds-table__row" role="row">
141
- <div className="navds-table__data-cell" role="cell">
142
- Geordi
143
- </div>
144
- <div className="navds-table__data-cell" role="cell">
145
- La Forge
146
- </div>
147
- <div className="navds-table__data-cell" role="cell">
148
- Sjefsingeniør
149
- </div>
150
- </div>
151
- </div>
152
- </div>
153
- );
154
- };
155
-
156
- const SelectionTable = ({ size = "medium" }: { size?: "small" | "medium" }) => {
157
- const useToggleList = (initialState) => {
158
- const [list, setList] = useState(initialState);
159
-
160
- return [
161
- list,
162
- (value) =>
163
- setList((oldList) =>
164
- oldList.includes(value)
165
- ? oldList.filter((id) => id !== value)
166
- : [...oldList, value],
167
- ),
168
- ];
169
- };
170
-
171
- const [selectedRows, toggleSelectedRow] = useToggleList([]);
172
-
173
- return (
174
- <Table size={size} zebraStripes>
175
- <Table.Body>
176
- <Table.Row>
177
- <Table.DataCell>
178
- <Checkbox
179
- size={size}
180
- indeterminate
181
- onChange={() => toggleSelectedRow("all")}
182
- >
183
- Select all
184
- </Checkbox>
185
- </Table.DataCell>
186
- <Table.HeaderCell scope="col">Name</Table.HeaderCell>
187
- <Table.HeaderCell scope="col">Age</Table.HeaderCell>
188
- <Table.HeaderCell scope="col">Country</Table.HeaderCell>
189
- <Table.HeaderCell scope="col">Points</Table.HeaderCell>
190
- </Table.Row>
191
- <Table.Row selected={selectedRows.includes("1")}>
192
- <Table.DataCell>
193
- <Checkbox
194
- size={size}
195
- hideLabel
196
- checked={selectedRows.includes("1")}
197
- onChange={() => toggleSelectedRow("1")}
198
- aria-labelledby={`x_r1-${size}`}
199
- >
200
- {" "}
201
- </Checkbox>
202
- </Table.DataCell>
203
- <Table.HeaderCell scope="row">
204
- <span id={`x_r1-${size}`}>Donald Smith</span>
205
- </Table.HeaderCell>
206
- <Table.DataCell>32</Table.DataCell>
207
- <Table.DataCell>USA</Table.DataCell>
208
- <Table.DataCell>38</Table.DataCell>
209
- </Table.Row>
210
- <Table.Row selected>
211
- <Table.DataCell>
212
- <Checkbox
213
- size={size}
214
- hideLabel
215
- checked
216
- onChange={() => toggleSelectedRow("2")}
217
- aria-labelledby={`x_r2-${size}`}
218
- >
219
- {" "}
220
- </Checkbox>
221
- </Table.DataCell>
222
- <Table.HeaderCell scope="row">
223
- <span id={`x_r2-${size}`}>Preben Aalborg</span>
224
- </Table.HeaderCell>
225
- <Table.DataCell>44</Table.DataCell>
226
- <Table.DataCell>Denmark</Table.DataCell>
227
- <Table.DataCell>11</Table.DataCell>
228
- </Table.Row>
229
- </Table.Body>
230
- </Table>
231
- );
232
- };
233
-
234
- export const Selection = () => <SelectionTable />;
235
- export const SelectionSmall = () => <SelectionTable size="small" />;
236
-
237
- export const Chromatic = {
238
- render: () => (
239
- <VStack gap="8">
240
- <div>
241
- <h3>Default</h3>
242
- <Default />
243
- <h3>Zebra</h3>
244
- <Zebra />
245
- </div>
246
- <div>
247
- <h3>Large</h3>
248
- <SizeLarge />
249
- </div>
250
- <div>
251
- <h3>Medium</h3>
252
- <SizeMedium />
253
- </div>
254
- <div>
255
- <h3>Small</h3>
256
- <SizeSmall />
257
- </div>
258
- <div>
259
- <h3>With Buttons</h3>
260
- <Buttons />
261
- </div>
262
- <div>
263
- <h3>Custom with divs</h3>
264
- <WithDivs />
265
- </div>
266
- <div>
267
- <h3>Selection</h3>
268
- <Selection />
269
- </div>
270
- <div>
271
- <h3>Selection small</h3>
272
- <SelectionSmall />
273
- </div>
274
- <h2>Expandable</h2>
275
- <div>
276
- <h3>Large</h3>
277
- <ExpandableLarge />
278
- </div>
279
- <div>
280
- <h3>Medium</h3>
281
- <Expandable />
282
- </div>
283
- <div>
284
- <h3>Small</h3>
285
- <ExpandableSmall />
286
- </div>
287
- </VStack>
288
- ),
289
- parameters: {
290
- chromatic: { disable: false },
291
- },
292
- };
@@ -1,298 +0,0 @@
1
- import React, { useState } from "react";
2
- import { Button } from "../../button";
3
- import { Checkbox } from "../../form/checkbox";
4
- import { Link } from "../../link";
5
- import Table from "../Table";
6
-
7
- export default {
8
- title: "ds-react/Table",
9
- component: Table,
10
- parameters: {
11
- chromatic: { disable: true },
12
- },
13
- };
14
-
15
- export const Expandable = () => {
16
- return (
17
- <Table zebraStripes>
18
- <Table.Header>
19
- <Table.Row>
20
- {columns.map(({ key, name }) => (
21
- <Table.HeaderCell key={key}>{name}</Table.HeaderCell>
22
- ))}
23
- <Table.HeaderCell />
24
- </Table.Row>
25
- </Table.Header>
26
- <Table.Body>
27
- {data.map((row) => (
28
- <Table.ExpandableRow
29
- expansionDisabled={row.animal === "Sel"}
30
- content={row.content}
31
- key={row.name}
32
- togglePlacement="right"
33
- defaultOpen
34
- >
35
- {columns.map(({ key }) => (
36
- <Table.DataCell key={key}>{row[key]}</Table.DataCell>
37
- ))}
38
- </Table.ExpandableRow>
39
- ))}
40
- </Table.Body>
41
- </Table>
42
- );
43
- };
44
-
45
- export const ExpandableLarge = () => {
46
- const [open, setOpen] = useState(false);
47
- return (
48
- <Table size="large">
49
- <Table.Header>
50
- <Table.Row>
51
- <Table.HeaderCell />
52
- {columns.map(({ key, name }) => (
53
- <Table.HeaderCell key={key}>{name}</Table.HeaderCell>
54
- ))}
55
- </Table.Row>
56
- </Table.Header>
57
- <Table.Body>
58
- {data.slice(0, 1).map((row) => (
59
- <Table.ExpandableRow defaultOpen content={row.content} key={row.name}>
60
- {columns.map(({ key }) => (
61
- <Table.DataCell key={key}>{row[key]}</Table.DataCell>
62
- ))}
63
- </Table.ExpandableRow>
64
- ))}
65
- {data.slice(1, 2).map((row) => (
66
- <Table.ExpandableRow
67
- content={row.content}
68
- key={row.name}
69
- open={open}
70
- onOpenChange={setOpen}
71
- >
72
- {columns.map(({ key }) => (
73
- <Table.DataCell key={key}>{row[key]}</Table.DataCell>
74
- ))}
75
- </Table.ExpandableRow>
76
- ))}
77
- </Table.Body>
78
- </Table>
79
- );
80
- };
81
-
82
- export const ExpandableSmall = () => {
83
- const [open, setOpen] = useState(false);
84
- return (
85
- <Table size="small">
86
- <Table.Header>
87
- <Table.Row>
88
- <Table.HeaderCell />
89
- {columns.map(({ key, name }) => (
90
- <Table.HeaderCell key={key}>{name}</Table.HeaderCell>
91
- ))}
92
- </Table.Row>
93
- </Table.Header>
94
- <Table.Body>
95
- {data.slice(0, 1).map((row) => (
96
- <Table.ExpandableRow defaultOpen content={row.content} key={row.name}>
97
- {columns.map(({ key }) => (
98
- <Table.DataCell key={key}>{row[key]}</Table.DataCell>
99
- ))}
100
- </Table.ExpandableRow>
101
- ))}
102
- {data.slice(1, 2).map((row) => (
103
- <Table.ExpandableRow
104
- content={row.content}
105
- key={row.name}
106
- open={open}
107
- onOpenChange={setOpen}
108
- >
109
- {columns.map(({ key }) => (
110
- <Table.DataCell key={key}>{row[key]}</Table.DataCell>
111
- ))}
112
- </Table.ExpandableRow>
113
- ))}
114
- </Table.Body>
115
- </Table>
116
- );
117
- };
118
-
119
- const columns = [
120
- {
121
- name: "Navn",
122
- key: "name",
123
- },
124
- {
125
- name: "Favoritt dyr",
126
- key: "animal",
127
- },
128
- {
129
- name: "Favoritt farge",
130
- key: "color",
131
- },
132
- {
133
- name: "Minst favoritt dyr",
134
- key: "leastAnimal",
135
- },
136
- {
137
- name: "Minst favoritt farge",
138
- key: "leastColor",
139
- },
140
- {
141
- name: "Status",
142
- key: "status",
143
- },
144
- ];
145
-
146
- const data = [
147
- {
148
- name: "Ola Conny Brakkestad",
149
- animal: "Ku",
150
- color: "Brun",
151
- leastAnimal: "Sel",
152
- leastColor: "Lyseblå",
153
- status: "Inaktiv",
154
- content: (
155
- <>
156
- Ola Conny Brakkestad sier hei. Her er litt innhold med en{" "}
157
- <Link href="#">link.</Link>
158
- </>
159
- ),
160
- },
161
-
162
- {
163
- name: "Henriette Kristensen",
164
- animal: "Bjørn",
165
- color: "Hvit",
166
- leastAnimal: "Grevling",
167
- leastColor: "Transparent",
168
- status: <Link href="http://example.com">Hissig</Link>,
169
- content: (
170
- <>
171
- Henriette Kristensen sier hei. Her er litt innhold med en{" "}
172
- <Link href="http://example.com">lenke</Link>. I forhold til en betydelig
173
- avveining synliggjøres potensialet med sikte på satsingsområdet. Gitt en
174
- manglende avveining synliggjøres instrumentet på bakgrunn av forholdene.
175
- Under hensyntagen til en inkluderende avveining stimuleres resultatene
176
- med henblikk på løsningen. På grunn av en integrert organisasjon
177
- initieres kunnskapene eller sagt på en annen måte: evalueringen. Grunnet
178
- en gjeldende målsetting dokumenteres relasjonene hva angår egenarten.
179
- </>
180
- ),
181
- },
182
-
183
- {
184
- name: "Suki Clydesdale",
185
- animal: "Sel",
186
- color: "Grønn",
187
- leastAnimal: "Serval",
188
- leastColor: "Rosa",
189
- status: "Deaktivert",
190
- content: (
191
- <>
192
- Suki Clydesdale sier hei. Her er litt innhold med en{" "}
193
- <Link href="http://example.com">link</Link>.
194
- </>
195
- ),
196
- },
197
-
198
- {
199
- name: "Hans-Hermann Hoppe",
200
- animal: "Mudkip",
201
- color: "Oransje",
202
- leastAnimal: "Skare",
203
- leastColor: "Hvit",
204
- status: <Link href="#">Starter</Link>,
205
- content: (
206
- <>
207
- Hans-Hermann Hoppe sier hei. Her er litt innhold med en{" "}
208
- <Link href="http://example.com">link</Link>.
209
- </>
210
- ),
211
- },
212
-
213
- {
214
- name: "Max Kraft",
215
- animal: "Løve",
216
- color: "Blå",
217
- leastAnimal: "Hund",
218
- leastColor: "Cyan",
219
- status: <Link href="#">Eksplodert</Link>,
220
- content: (
221
- <>
222
- Max Kraft sier hei. Her er litt innhold med en{" "}
223
- <Link href="http://example.com">link</Link>.
224
- </>
225
- ),
226
- },
227
-
228
- {
229
- name: "Pat Ole",
230
- animal: "Bjørnedyr",
231
- color: "Gul",
232
- leastAnimal: "Meitemark",
233
- leastColor: "Svart",
234
- status: <Link href="#">Gunstig</Link>,
235
- content: (
236
- <>
237
- Pat Ole sier hei. Her er litt innhold med en{" "}
238
- <Link href="http://example.com">lenke</Link>.
239
- </>
240
- ),
241
- },
242
- ];
243
-
244
- export const ClickableRow = () => {
245
- const [isRowOpen1, setIsRowOpen1] = useState(false);
246
- const [isRowOpen2, setIsRowOpen2] = useState(false);
247
-
248
- return (
249
- <>
250
- <Table zebraStripes>
251
- <Table.Header>
252
- <Table.Row>
253
- <Table.HeaderCell>Navn</Table.HeaderCell>
254
- <Table.HeaderCell>Info</Table.HeaderCell>
255
- <Table.HeaderCell aria-hidden />
256
- </Table.Row>
257
- </Table.Header>
258
- <Table.Body>
259
- <Table.ExpandableRow
260
- content={<div>placeholder row 1</div>}
261
- togglePlacement="right"
262
- onOpenChange={setIsRowOpen1}
263
- data-testid="row1"
264
- open={isRowOpen1}
265
- expandOnRowClick
266
- >
267
- <Table.DataCell>Ola</Table.DataCell>
268
- <Table.DataCell>
269
- <Button
270
- size="xsmall"
271
- onClick={() => {
272
- alert("Mer info");
273
- }}
274
- >
275
- Mer info
276
- </Button>
277
- </Table.DataCell>
278
- </Table.ExpandableRow>
279
- <Table.ExpandableRow
280
- content={<div>placeholder row 2</div>}
281
- togglePlacement="right"
282
- onOpenChange={setIsRowOpen2}
283
- data-testid="row2"
284
- open={isRowOpen2}
285
- expandOnRowClick
286
- >
287
- <Table.DataCell>Hans</Table.DataCell>
288
- <Table.DataCell>
289
- <Checkbox hideLabel size="small">
290
- Sett
291
- </Checkbox>
292
- </Table.DataCell>
293
- </Table.ExpandableRow>
294
- </Table.Body>
295
- </Table>
296
- </>
297
- );
298
- };