@navikt/ds-react 0.14.12 → 0.15.0-rc.30

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 (62) hide show
  1. package/cjs/button/Button.js +3 -3
  2. package/cjs/form/Fieldset/Fieldset.js +3 -3
  3. package/cjs/form/Select.js +2 -2
  4. package/cjs/form/Switch.js +1 -1
  5. package/cjs/form/TextField.js +3 -5
  6. package/cjs/form/Textarea.js +3 -3
  7. package/cjs/form/checkbox/Checkbox.js +1 -1
  8. package/cjs/form/search-field/SearchField.js +2 -2
  9. package/cjs/index.js +1 -0
  10. package/cjs/pagination/Pagination.js +44 -0
  11. package/cjs/pagination/index.js +19 -0
  12. package/cjs/pagination/package.json +6 -0
  13. package/cjs/table/ColumnHeader.js +58 -0
  14. package/cjs/table/Table.js +15 -2
  15. package/esm/button/Button.d.ts +1 -1
  16. package/esm/button/Button.js +3 -3
  17. package/esm/button/Button.js.map +1 -1
  18. package/esm/form/Fieldset/Fieldset.js +3 -3
  19. package/esm/form/Fieldset/Fieldset.js.map +1 -1
  20. package/esm/form/Select.js +2 -2
  21. package/esm/form/Select.js.map +1 -1
  22. package/esm/form/Switch.js +1 -1
  23. package/esm/form/Switch.js.map +1 -1
  24. package/esm/form/TextField.js +3 -5
  25. package/esm/form/TextField.js.map +1 -1
  26. package/esm/form/Textarea.js +3 -3
  27. package/esm/form/Textarea.js.map +1 -1
  28. package/esm/form/checkbox/Checkbox.js +1 -1
  29. package/esm/form/checkbox/Checkbox.js.map +1 -1
  30. package/esm/form/search-field/SearchField.js +2 -2
  31. package/esm/form/search-field/SearchField.js.map +1 -1
  32. package/esm/index.d.ts +1 -0
  33. package/esm/index.js +1 -0
  34. package/esm/index.js.map +1 -1
  35. package/esm/pagination/Pagination.d.ts +21 -0
  36. package/esm/pagination/Pagination.js +38 -0
  37. package/esm/pagination/Pagination.js.map +1 -0
  38. package/esm/pagination/index.d.ts +2 -0
  39. package/esm/pagination/index.js +3 -0
  40. package/esm/pagination/index.js.map +1 -0
  41. package/esm/table/ColumnHeader.d.ts +16 -0
  42. package/esm/table/ColumnHeader.js +35 -0
  43. package/esm/table/ColumnHeader.js.map +1 -0
  44. package/esm/table/Table.d.ts +16 -0
  45. package/esm/table/Table.js +15 -2
  46. package/esm/table/Table.js.map +1 -1
  47. package/package.json +4 -3
  48. package/src/accordion/AccordionHeader.tsx +4 -3
  49. package/src/button/Button.tsx +7 -3
  50. package/src/button/stories/button.stories.tsx +8 -0
  51. package/src/form/Switch.tsx +4 -2
  52. package/src/form/stories/switch.stories.tsx +8 -0
  53. package/src/index.ts +1 -0
  54. package/src/pagination/Pagination.tsx +89 -0
  55. package/src/pagination/index.ts +2 -0
  56. package/src/pagination/steps.test.ts +12 -0
  57. package/src/pagination/stories/pagination.stories.tsx +15 -0
  58. package/src/table/ColumnHeader.tsx +66 -0
  59. package/src/table/Table.tsx +47 -2
  60. package/src/table/stories/people.json +822 -0
  61. package/src/table/stories/table-async.stories.tsx +150 -0
  62. package/src/table/stories/table.stories.tsx +35 -2
@@ -3,9 +3,15 @@ import cl from "classnames";
3
3
  import Header, { HeaderType } from "./Header";
4
4
  import Body, { BodyType } from "./Body";
5
5
  import Row, { RowType } from "./Row";
6
+ import ColumnHeader, { ColumnHeaderType } from "./ColumnHeader";
6
7
  import HeaderCell, { HeaderCellType } from "./HeaderCell";
7
8
  import DataCell, { DataCellType } from "./DataCell";
8
9
 
10
+ export interface SortState {
11
+ orderBy: string;
12
+ direction: "ascending" | "descending";
13
+ }
14
+
9
15
  export interface TableProps extends React.HTMLAttributes<HTMLTableElement> {
10
16
  /**
11
17
  * Changes padding
@@ -17,6 +23,14 @@ export interface TableProps extends React.HTMLAttributes<HTMLTableElement> {
17
23
  * @default false
18
24
  */
19
25
  zebraStripes?: boolean;
26
+ /**
27
+ * Sort state
28
+ */
29
+ sort?: SortState;
30
+ /**
31
+ * Callback whens ort state changes
32
+ */
33
+ onSortChange?: (state?: SortState) => void;
20
34
  }
21
35
 
22
36
  export interface TableType
@@ -28,17 +42,47 @@ export interface TableType
28
42
  Row: RowType;
29
43
  DataCell: DataCellType;
30
44
  HeaderCell: HeaderCellType;
45
+ ColumnHeader: ColumnHeaderType;
31
46
  }
32
47
 
33
48
  export interface TableContextProps {
34
49
  size: "medium" | "small";
50
+ toggleColumnSort?: (sortKey: string) => void;
51
+ sort?: SortState;
35
52
  }
36
53
 
37
54
  export const TableContext = createContext<TableContextProps | null>(null);
38
55
 
39
56
  const Table = forwardRef(
40
- ({ className, zebraStripes = false, size = "medium", ...rest }, ref) => (
41
- <TableContext.Provider value={{ size }}>
57
+ (
58
+ {
59
+ className,
60
+ zebraStripes = false,
61
+ size = "medium",
62
+ onSortChange,
63
+ sort,
64
+ ...rest
65
+ },
66
+ ref
67
+ ) => (
68
+ <TableContext.Provider
69
+ value={{
70
+ size,
71
+ toggleColumnSort: (sortKey) =>
72
+ onSortChange?.(
73
+ sort?.orderBy === sortKey && sort.direction === "descending"
74
+ ? undefined
75
+ : {
76
+ orderBy: sortKey,
77
+ direction:
78
+ sort?.direction === "ascending"
79
+ ? "descending"
80
+ : "ascending",
81
+ }
82
+ ),
83
+ sort,
84
+ }}
85
+ >
42
86
  <table
43
87
  {...rest}
44
88
  ref={ref}
@@ -53,6 +97,7 @@ const Table = forwardRef(
53
97
  Table.Header = Header;
54
98
  Table.Body = Body;
55
99
  Table.Row = Row;
100
+ Table.ColumnHeader = ColumnHeader;
56
101
  Table.HeaderCell = HeaderCell;
57
102
  Table.DataCell = DataCell;
58
103