@navikt/ds-react 8.1.0 → 8.2.0
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.
- package/cjs/data/action-bar/root/DataActionBarRoot.d.ts +27 -0
- package/cjs/data/action-bar/root/DataActionBarRoot.js +49 -0
- package/cjs/data/action-bar/root/DataActionBarRoot.js.map +1 -0
- package/cjs/data/filter/index.d.ts +2 -0
- package/cjs/data/filter/index.js +8 -0
- package/cjs/data/filter/index.js.map +1 -0
- package/cjs/data/filter/item/DataFilterItem.d.ts +5 -0
- package/cjs/data/filter/item/DataFilterItem.js +24 -0
- package/cjs/data/filter/item/DataFilterItem.js.map +1 -0
- package/cjs/data/filter/root/DataFilterRoot.d.ts +23 -0
- package/cjs/data/filter/root/DataFilterRoot.js +28 -0
- package/cjs/data/filter/root/DataFilterRoot.js.map +1 -0
- package/cjs/data/stories/dummy-data.d.ts +17 -0
- package/cjs/data/stories/dummy-data.js +1526 -0
- package/cjs/data/stories/dummy-data.js.map +1 -0
- package/cjs/data/table/caption/DataTableCaption.d.ts +5 -0
- package/cjs/data/table/caption/DataTableCaption.js +55 -0
- package/cjs/data/table/caption/DataTableCaption.js.map +1 -0
- package/cjs/data/table/index.d.ts +2 -0
- package/cjs/data/table/index.js +16 -0
- package/cjs/data/table/index.js.map +1 -0
- package/cjs/data/table/root/DataTableRoot.d.ts +94 -0
- package/cjs/data/table/root/DataTableRoot.js +74 -0
- package/cjs/data/table/root/DataTableRoot.js.map +1 -0
- package/cjs/data/table/tbody/DataTableTbody.d.ts +5 -0
- package/cjs/data/table/tbody/DataTableTbody.js +55 -0
- package/cjs/data/table/tbody/DataTableTbody.js.map +1 -0
- package/cjs/data/table/td/DataTableTd.d.ts +5 -0
- package/cjs/data/table/td/DataTableTd.js +55 -0
- package/cjs/data/table/td/DataTableTd.js.map +1 -0
- package/cjs/data/table/th/DataTableTh.d.ts +5 -0
- package/cjs/data/table/th/DataTableTh.js +55 -0
- package/cjs/data/table/th/DataTableTh.js.map +1 -0
- package/cjs/data/table/thead/DataTableThead.d.ts +5 -0
- package/cjs/data/table/thead/DataTableThead.js +55 -0
- package/cjs/data/table/thead/DataTableThead.js.map +1 -0
- package/cjs/data/table/tr/DataTableTr.d.ts +5 -0
- package/cjs/data/table/tr/DataTableTr.js +55 -0
- package/cjs/data/table/tr/DataTableTr.js.map +1 -0
- package/cjs/data/toolbar/index.d.ts +2 -0
- package/cjs/data/toolbar/index.js +9 -0
- package/cjs/data/toolbar/index.js.map +1 -0
- package/cjs/data/toolbar/root/DataToolbarRoot.d.ts +32 -0
- package/cjs/data/toolbar/root/DataToolbarRoot.js +32 -0
- package/cjs/data/toolbar/root/DataToolbarRoot.js.map +1 -0
- package/cjs/data/toolbar/search-field/DataToolbarSearchField.d.ts +7 -0
- package/cjs/data/toolbar/search-field/DataToolbarSearchField.js +26 -0
- package/cjs/data/toolbar/search-field/DataToolbarSearchField.js.map +1 -0
- package/cjs/data/toolbar/toggle-button/DataToolbarToggleButton.d.ts +36 -0
- package/cjs/data/toolbar/toggle-button/DataToolbarToggleButton.js +32 -0
- package/cjs/data/toolbar/toggle-button/DataToolbarToggleButton.js.map +1 -0
- package/cjs/internal-header/InternalHeader.d.ts +5 -6
- package/cjs/internal-header/InternalHeader.js +5 -6
- package/cjs/internal-header/InternalHeader.js.map +1 -1
- package/cjs/overlays/action-menu/ActionMenu.d.ts +11 -1
- package/cjs/overlays/action-menu/ActionMenu.js +8 -9
- package/cjs/overlays/action-menu/ActionMenu.js.map +1 -1
- package/esm/data/action-bar/root/DataActionBarRoot.d.ts +27 -0
- package/esm/data/action-bar/root/DataActionBarRoot.js +43 -0
- package/esm/data/action-bar/root/DataActionBarRoot.js.map +1 -0
- package/esm/data/filter/index.d.ts +2 -0
- package/esm/data/filter/index.js +3 -0
- package/esm/data/filter/index.js.map +1 -0
- package/esm/data/filter/item/DataFilterItem.d.ts +5 -0
- package/esm/data/filter/item/DataFilterItem.js +18 -0
- package/esm/data/filter/item/DataFilterItem.js.map +1 -0
- package/esm/data/filter/root/DataFilterRoot.d.ts +23 -0
- package/esm/data/filter/root/DataFilterRoot.js +21 -0
- package/esm/data/filter/root/DataFilterRoot.js.map +1 -0
- package/esm/data/stories/dummy-data.d.ts +17 -0
- package/esm/data/stories/dummy-data.js +1520 -0
- package/esm/data/stories/dummy-data.js.map +1 -0
- package/esm/data/table/caption/DataTableCaption.d.ts +5 -0
- package/esm/data/table/caption/DataTableCaption.js +19 -0
- package/esm/data/table/caption/DataTableCaption.js.map +1 -0
- package/esm/data/table/index.d.ts +2 -0
- package/esm/data/table/index.js +3 -0
- package/esm/data/table/index.js.map +1 -0
- package/esm/data/table/root/DataTableRoot.d.ts +94 -0
- package/esm/data/table/root/DataTableRoot.js +32 -0
- package/esm/data/table/root/DataTableRoot.js.map +1 -0
- package/esm/data/table/tbody/DataTableTbody.d.ts +5 -0
- package/esm/data/table/tbody/DataTableTbody.js +19 -0
- package/esm/data/table/tbody/DataTableTbody.js.map +1 -0
- package/esm/data/table/td/DataTableTd.d.ts +5 -0
- package/esm/data/table/td/DataTableTd.js +19 -0
- package/esm/data/table/td/DataTableTd.js.map +1 -0
- package/esm/data/table/th/DataTableTh.d.ts +5 -0
- package/esm/data/table/th/DataTableTh.js +19 -0
- package/esm/data/table/th/DataTableTh.js.map +1 -0
- package/esm/data/table/thead/DataTableThead.d.ts +5 -0
- package/esm/data/table/thead/DataTableThead.js +19 -0
- package/esm/data/table/thead/DataTableThead.js.map +1 -0
- package/esm/data/table/tr/DataTableTr.d.ts +5 -0
- package/esm/data/table/tr/DataTableTr.js +19 -0
- package/esm/data/table/tr/DataTableTr.js.map +1 -0
- package/esm/data/toolbar/index.d.ts +2 -0
- package/esm/data/toolbar/index.js +3 -0
- package/esm/data/toolbar/index.js.map +1 -0
- package/esm/data/toolbar/root/DataToolbarRoot.d.ts +32 -0
- package/esm/data/toolbar/root/DataToolbarRoot.js +24 -0
- package/esm/data/toolbar/root/DataToolbarRoot.js.map +1 -0
- package/esm/data/toolbar/search-field/DataToolbarSearchField.d.ts +7 -0
- package/esm/data/toolbar/search-field/DataToolbarSearchField.js +20 -0
- package/esm/data/toolbar/search-field/DataToolbarSearchField.js.map +1 -0
- package/esm/data/toolbar/toggle-button/DataToolbarToggleButton.d.ts +36 -0
- package/esm/data/toolbar/toggle-button/DataToolbarToggleButton.js +26 -0
- package/esm/data/toolbar/toggle-button/DataToolbarToggleButton.js.map +1 -0
- package/esm/internal-header/InternalHeader.d.ts +5 -6
- package/esm/internal-header/InternalHeader.js +5 -6
- package/esm/internal-header/InternalHeader.js.map +1 -1
- package/esm/overlays/action-menu/ActionMenu.d.ts +11 -1
- package/esm/overlays/action-menu/ActionMenu.js +8 -9
- package/esm/overlays/action-menu/ActionMenu.js.map +1 -1
- package/package.json +7 -7
- package/src/data/action-bar/root/DataActionBarRoot.tsx +59 -0
- package/src/data/filter/index.ts +6 -0
- package/src/data/filter/item/DataFilterItem.tsx +12 -0
- package/src/data/filter/root/DataFilterRoot.tsx +42 -0
- package/src/data/stories/dummy-data.tsx +1596 -0
- package/src/data/table/Readme.md +11 -0
- package/src/data/table/caption/DataTableCaption.tsx +20 -0
- package/src/data/table/index.tsx +19 -0
- package/src/data/table/root/DataTableRoot.tsx +143 -0
- package/src/data/table/tbody/DataTableTbody.tsx +19 -0
- package/src/data/table/td/DataTableTd.tsx +19 -0
- package/src/data/table/th/DataTableTh.tsx +19 -0
- package/src/data/table/thead/DataTableThead.tsx +19 -0
- package/src/data/table/tr/DataTableTr.tsx +19 -0
- package/src/data/toolbar/index.ts +11 -0
- package/src/data/toolbar/root/DataToolbarRoot.tsx +65 -0
- package/src/data/toolbar/search-field/DataToolbarSearchField.tsx +29 -0
- package/src/data/toolbar/toggle-button/DataToolbarToggleButton.tsx +60 -0
- package/src/internal-header/InternalHeader.tsx +5 -6
- package/src/overlays/action-menu/ActionMenu.tsx +58 -34
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { cl } from "../../../utils/helpers";
|
|
3
|
+
|
|
4
|
+
type DataTableCaptionProps = React.HTMLAttributes<HTMLTableCaptionElement>;
|
|
5
|
+
|
|
6
|
+
const DataTableCaption = forwardRef<
|
|
7
|
+
HTMLTableCaptionElement,
|
|
8
|
+
DataTableCaptionProps
|
|
9
|
+
>(({ className, ...rest }, forwardedRef) => {
|
|
10
|
+
return (
|
|
11
|
+
<caption
|
|
12
|
+
{...rest}
|
|
13
|
+
ref={forwardedRef}
|
|
14
|
+
className={cl("aksel-data-table__caption", className)}
|
|
15
|
+
/>
|
|
16
|
+
);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export { DataTableCaption };
|
|
20
|
+
export type { DataTableCaptionProps };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export {
|
|
3
|
+
default as DataTable,
|
|
4
|
+
DataTableCaption,
|
|
5
|
+
DataTableThead,
|
|
6
|
+
DataTableTbody,
|
|
7
|
+
DataTableTr,
|
|
8
|
+
DataTableTh,
|
|
9
|
+
DataTableTd,
|
|
10
|
+
} from "./root/DataTableRoot";
|
|
11
|
+
export type {
|
|
12
|
+
DataTableProps,
|
|
13
|
+
DataTableCaptionProps,
|
|
14
|
+
DataTableTheadProps,
|
|
15
|
+
DataTableTbodyProps,
|
|
16
|
+
DataTableTrProps,
|
|
17
|
+
DataTableThProps,
|
|
18
|
+
DataTableTdProps,
|
|
19
|
+
} from "./root/DataTableRoot";
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { cl } from "../../../utils/helpers";
|
|
3
|
+
import {
|
|
4
|
+
DataTableCaption,
|
|
5
|
+
type DataTableCaptionProps,
|
|
6
|
+
} from "../caption/DataTableCaption";
|
|
7
|
+
import {
|
|
8
|
+
DataTableTbody,
|
|
9
|
+
type DataTableTbodyProps,
|
|
10
|
+
} from "../tbody/DataTableTbody";
|
|
11
|
+
import { DataTableTd, type DataTableTdProps } from "../td/DataTableTd";
|
|
12
|
+
import { DataTableTh, type DataTableThProps } from "../th/DataTableTh";
|
|
13
|
+
import {
|
|
14
|
+
DataTableThead,
|
|
15
|
+
type DataTableTheadProps,
|
|
16
|
+
} from "../thead/DataTableThead";
|
|
17
|
+
import { DataTableTr, type DataTableTrProps } from "../tr/DataTableTr";
|
|
18
|
+
|
|
19
|
+
interface DataTableProps extends React.HTMLAttributes<HTMLTableElement> {
|
|
20
|
+
children: React.ReactNode;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface DataTableRootComponent extends React.ForwardRefExoticComponent<
|
|
24
|
+
DataTableProps & React.RefAttributes<HTMLDialogElement>
|
|
25
|
+
> {
|
|
26
|
+
/**
|
|
27
|
+
* @see 🏷️ {@link DataTableCaptionProps}
|
|
28
|
+
* @example
|
|
29
|
+
* ```jsx
|
|
30
|
+
* <DataTable>
|
|
31
|
+
* <DataTable.Caption>
|
|
32
|
+
* Lorem ipsum
|
|
33
|
+
* </DataTable.Caption
|
|
34
|
+
* </DataTable>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
Caption: typeof DataTableCaption;
|
|
38
|
+
/**
|
|
39
|
+
* @see 🏷️ {@link DataTableTheadProps}
|
|
40
|
+
* @example
|
|
41
|
+
* ```jsx
|
|
42
|
+
* <DataTable>
|
|
43
|
+
* <DataTable.Thead>
|
|
44
|
+
* ... TODO
|
|
45
|
+
* </DataTable.Thead>
|
|
46
|
+
* </DataTable>
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
Thead: typeof DataTableThead;
|
|
50
|
+
/**
|
|
51
|
+
* @see 🏷️ {@link DataTableTbodyProps}
|
|
52
|
+
* @example
|
|
53
|
+
* ```jsx
|
|
54
|
+
* <DataTable>
|
|
55
|
+
* <DataTable.Tbody>
|
|
56
|
+
* ... TODO
|
|
57
|
+
* </DataTable.Tbody>
|
|
58
|
+
* </DataTable>
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
Tbody: typeof DataTableTbody;
|
|
62
|
+
/**
|
|
63
|
+
* @see 🏷️ {@link DataTableTrProps}
|
|
64
|
+
* @example
|
|
65
|
+
* ```jsx
|
|
66
|
+
* <DataTable>
|
|
67
|
+
* <DataTable.Tr>
|
|
68
|
+
* ... TODO
|
|
69
|
+
* </DataTable.Tr
|
|
70
|
+
* </DataTable>
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
Tr: typeof DataTableTr;
|
|
74
|
+
/**
|
|
75
|
+
* @see 🏷️ {@link DataTableThProps}
|
|
76
|
+
* @example
|
|
77
|
+
* ```jsx
|
|
78
|
+
* <DataTable>
|
|
79
|
+
* <DataTable.Thead>
|
|
80
|
+
* <DataTable.Th>Header 1</DataTable.Th>
|
|
81
|
+
* <DataTable.Th>Header 2</DataTable.Th>
|
|
82
|
+
* </DataTable.Thead>
|
|
83
|
+
* </DataTable>
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
Th: typeof DataTableTh;
|
|
87
|
+
/**
|
|
88
|
+
* @see 🏷️ {@link DataTableTdProps}
|
|
89
|
+
* @example
|
|
90
|
+
* ```jsx
|
|
91
|
+
* <DataTable>
|
|
92
|
+
* <DataTable.Tbody>
|
|
93
|
+
* <DataTable.Td>
|
|
94
|
+
* Lorem ipsum
|
|
95
|
+
* </DataTable.Td>
|
|
96
|
+
* <DataTable.Td>
|
|
97
|
+
* Dolor sit amet
|
|
98
|
+
* </DataTable.Td>
|
|
99
|
+
* </DataTable.Tbody>
|
|
100
|
+
* </DataTable>
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
Td: typeof DataTableTd;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const DataTable = forwardRef<HTMLTableElement, DataTableProps>(
|
|
107
|
+
({ className, ...rest }, forwardedRef) => {
|
|
108
|
+
return (
|
|
109
|
+
<table
|
|
110
|
+
{...rest}
|
|
111
|
+
ref={forwardedRef}
|
|
112
|
+
className={cl("aksel-data-table", className)}
|
|
113
|
+
/>
|
|
114
|
+
);
|
|
115
|
+
},
|
|
116
|
+
) as DataTableRootComponent;
|
|
117
|
+
|
|
118
|
+
DataTable.Caption = DataTableCaption;
|
|
119
|
+
DataTable.Thead = DataTableThead;
|
|
120
|
+
DataTable.Tbody = DataTableTbody;
|
|
121
|
+
DataTable.Th = DataTableTh;
|
|
122
|
+
DataTable.Tr = DataTableTr;
|
|
123
|
+
DataTable.Td = DataTableTd;
|
|
124
|
+
|
|
125
|
+
export {
|
|
126
|
+
DataTable,
|
|
127
|
+
DataTableCaption,
|
|
128
|
+
DataTableTbody,
|
|
129
|
+
DataTableTd,
|
|
130
|
+
DataTableTh,
|
|
131
|
+
DataTableThead,
|
|
132
|
+
DataTableTr,
|
|
133
|
+
};
|
|
134
|
+
export default DataTable;
|
|
135
|
+
export type {
|
|
136
|
+
DataTableProps,
|
|
137
|
+
DataTableCaptionProps,
|
|
138
|
+
DataTableTbodyProps,
|
|
139
|
+
DataTableTdProps,
|
|
140
|
+
DataTableThProps,
|
|
141
|
+
DataTableTheadProps,
|
|
142
|
+
DataTableTrProps,
|
|
143
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { cl } from "../../../utils/helpers";
|
|
3
|
+
|
|
4
|
+
type DataTableTbodyProps = React.HTMLAttributes<HTMLTableSectionElement>;
|
|
5
|
+
|
|
6
|
+
const DataTableTbody = forwardRef<HTMLTableSectionElement, DataTableTbodyProps>(
|
|
7
|
+
({ className, ...rest }, forwardedRef) => {
|
|
8
|
+
return (
|
|
9
|
+
<tbody
|
|
10
|
+
{...rest}
|
|
11
|
+
ref={forwardedRef}
|
|
12
|
+
className={cl("aksel-data-table__tbody", className)}
|
|
13
|
+
/>
|
|
14
|
+
);
|
|
15
|
+
},
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
export { DataTableTbody };
|
|
19
|
+
export type { DataTableTbodyProps };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { cl } from "../../../utils/helpers";
|
|
3
|
+
|
|
4
|
+
type DataTableTdProps = React.HTMLAttributes<HTMLTableCellElement>;
|
|
5
|
+
|
|
6
|
+
const DataTableTd = forwardRef<HTMLTableCellElement, DataTableTdProps>(
|
|
7
|
+
({ className, ...rest }, forwardedRef) => {
|
|
8
|
+
return (
|
|
9
|
+
<td
|
|
10
|
+
{...rest}
|
|
11
|
+
ref={forwardedRef}
|
|
12
|
+
className={cl("aksel-data-table__td", className)}
|
|
13
|
+
/>
|
|
14
|
+
);
|
|
15
|
+
},
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
export { DataTableTd };
|
|
19
|
+
export type { DataTableTdProps };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { cl } from "../../../utils/helpers";
|
|
3
|
+
|
|
4
|
+
type DataTableThProps = React.HTMLAttributes<HTMLTableCellElement>;
|
|
5
|
+
|
|
6
|
+
const DataTableTh = forwardRef<HTMLTableCellElement, DataTableThProps>(
|
|
7
|
+
({ className, ...rest }, forwardedRef) => {
|
|
8
|
+
return (
|
|
9
|
+
<th
|
|
10
|
+
{...rest}
|
|
11
|
+
ref={forwardedRef}
|
|
12
|
+
className={cl("aksel-data-table__th", className)}
|
|
13
|
+
/>
|
|
14
|
+
);
|
|
15
|
+
},
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
export { DataTableTh };
|
|
19
|
+
export type { DataTableThProps };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { cl } from "../../../utils/helpers";
|
|
3
|
+
|
|
4
|
+
type DataTableTheadProps = React.HTMLAttributes<HTMLTableSectionElement>;
|
|
5
|
+
|
|
6
|
+
const DataTableThead = forwardRef<HTMLTableSectionElement, DataTableTheadProps>(
|
|
7
|
+
({ className, ...rest }, forwardedRef) => {
|
|
8
|
+
return (
|
|
9
|
+
<thead
|
|
10
|
+
{...rest}
|
|
11
|
+
ref={forwardedRef}
|
|
12
|
+
className={cl("aksel-data-table__thead", className)}
|
|
13
|
+
/>
|
|
14
|
+
);
|
|
15
|
+
},
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
export { DataTableThead };
|
|
19
|
+
export type { DataTableTheadProps };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { forwardRef } from "react";
|
|
2
|
+
import { cl } from "../../../utils/helpers";
|
|
3
|
+
|
|
4
|
+
type DataTableTrProps = React.HTMLAttributes<HTMLTableRowElement>;
|
|
5
|
+
|
|
6
|
+
const DataTableTr = forwardRef<HTMLTableRowElement, DataTableTrProps>(
|
|
7
|
+
({ className, ...rest }, forwardedRef) => {
|
|
8
|
+
return (
|
|
9
|
+
<tr
|
|
10
|
+
{...rest}
|
|
11
|
+
ref={forwardedRef}
|
|
12
|
+
className={cl("aksel-data-table__tr", className)}
|
|
13
|
+
/>
|
|
14
|
+
);
|
|
15
|
+
},
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
export { DataTableTr };
|
|
19
|
+
export type { DataTableTrProps };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
export {
|
|
3
|
+
DataToolbar,
|
|
4
|
+
DataToolbarSearchField,
|
|
5
|
+
DataToolbarToggleButton,
|
|
6
|
+
} from "./root/DataToolbarRoot";
|
|
7
|
+
export type {
|
|
8
|
+
DataToolbarProps,
|
|
9
|
+
DataToolbarSearchFieldProps,
|
|
10
|
+
DataToolbarToggleButtonProps,
|
|
11
|
+
} from "./root/DataToolbarRoot";
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { cl } from "../../../utils/helpers";
|
|
3
|
+
import {
|
|
4
|
+
DataToolbarSearchField,
|
|
5
|
+
type DataToolbarSearchFieldProps,
|
|
6
|
+
} from "../search-field/DataToolbarSearchField";
|
|
7
|
+
import DataToolbarToggleButton, {
|
|
8
|
+
type DataToolbarToggleButtonProps,
|
|
9
|
+
} from "../toggle-button/DataToolbarToggleButton";
|
|
10
|
+
|
|
11
|
+
interface DataToolbarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
12
|
+
children: React.ReactNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface DataToolbarRootComponent extends React.ForwardRefExoticComponent<
|
|
16
|
+
DataToolbarProps & React.RefAttributes<HTMLDivElement>
|
|
17
|
+
> {
|
|
18
|
+
/**
|
|
19
|
+
* @see 🏷️ {@link DataToolbarSearchFieldProps}
|
|
20
|
+
* @example
|
|
21
|
+
* ```tsx
|
|
22
|
+
* <DataToolbar>
|
|
23
|
+
* <DataToolbar.SearchField />
|
|
24
|
+
* </DataToolbar>
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
SearchField: typeof DataToolbarSearchField;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @see 🏷️ {@link DataToolbarToggleButtonProps}
|
|
31
|
+
* @example
|
|
32
|
+
* ```tsx
|
|
33
|
+
* <DataToolbar>
|
|
34
|
+
* <DataToolbar.ToggleButton />
|
|
35
|
+
* </DataToolbar>
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
ToggleButton: typeof DataToolbarToggleButton;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const DataToolbar = React.forwardRef<HTMLDivElement, DataToolbarProps>(
|
|
42
|
+
({ children, className, ...rest }, forwardRef) => {
|
|
43
|
+
return (
|
|
44
|
+
<div
|
|
45
|
+
ref={forwardRef}
|
|
46
|
+
{...rest}
|
|
47
|
+
className={cl("aksel-data-toolbar", className)}
|
|
48
|
+
role="toolbar"
|
|
49
|
+
>
|
|
50
|
+
{children}
|
|
51
|
+
</div>
|
|
52
|
+
);
|
|
53
|
+
},
|
|
54
|
+
) as DataToolbarRootComponent;
|
|
55
|
+
|
|
56
|
+
DataToolbar.SearchField = DataToolbarSearchField;
|
|
57
|
+
DataToolbar.ToggleButton = DataToolbarToggleButton;
|
|
58
|
+
|
|
59
|
+
export { DataToolbar, DataToolbarSearchField, DataToolbarToggleButton };
|
|
60
|
+
export default DataToolbar;
|
|
61
|
+
export type {
|
|
62
|
+
DataToolbarProps,
|
|
63
|
+
DataToolbarSearchFieldProps,
|
|
64
|
+
DataToolbarToggleButtonProps,
|
|
65
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Search, type SearchProps } from "../../../form/search";
|
|
3
|
+
|
|
4
|
+
type DataToolbarSearchFieldProps = Omit<
|
|
5
|
+
React.HTMLAttributes<HTMLInputElement>,
|
|
6
|
+
"data-color" | "size" | "type"
|
|
7
|
+
> &
|
|
8
|
+
Pick<SearchProps, "label" | "onChange">;
|
|
9
|
+
|
|
10
|
+
const DataToolbarSearchField = React.forwardRef<
|
|
11
|
+
HTMLInputElement,
|
|
12
|
+
DataToolbarSearchFieldProps
|
|
13
|
+
>(({ className, ...props }, ref) => {
|
|
14
|
+
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
|
+
/>
|
|
24
|
+
);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
export { DataToolbarSearchField };
|
|
28
|
+
export default DataToolbarSearchField;
|
|
29
|
+
export type { DataToolbarSearchFieldProps };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { cl, composeEventHandlers } from "../../../utils/helpers";
|
|
3
|
+
import { useControllableState } from "../../../utils/hooks";
|
|
4
|
+
|
|
5
|
+
type DataToolbarToggleButtonProps =
|
|
6
|
+
React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
7
|
+
/**
|
|
8
|
+
* Indicates whether the toggle button is pressed or not.
|
|
9
|
+
* @default false
|
|
10
|
+
*/
|
|
11
|
+
isPressed?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Default uncontrolled pressed state
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
defaultPressed?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Callback for new pressed state
|
|
19
|
+
*/
|
|
20
|
+
onPressChange?: (isPressed: boolean) => void;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const DataToolbarToggleButton = React.forwardRef<
|
|
24
|
+
HTMLButtonElement,
|
|
25
|
+
DataToolbarToggleButtonProps
|
|
26
|
+
>(
|
|
27
|
+
(
|
|
28
|
+
{
|
|
29
|
+
className,
|
|
30
|
+
isPressed,
|
|
31
|
+
defaultPressed = false,
|
|
32
|
+
onPressChange,
|
|
33
|
+
onClick,
|
|
34
|
+
...props
|
|
35
|
+
},
|
|
36
|
+
ref,
|
|
37
|
+
) => {
|
|
38
|
+
const [pressed, setPressed] = useControllableState({
|
|
39
|
+
defaultValue: defaultPressed,
|
|
40
|
+
value: isPressed,
|
|
41
|
+
onChange: onPressChange,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<button
|
|
46
|
+
className={cl("aksel-data-toolbar__toggle-button", className)}
|
|
47
|
+
ref={ref}
|
|
48
|
+
{...props}
|
|
49
|
+
aria-pressed={pressed}
|
|
50
|
+
onClick={composeEventHandlers(onClick, () =>
|
|
51
|
+
setPressed((oldState) => !oldState),
|
|
52
|
+
)}
|
|
53
|
+
/>
|
|
54
|
+
);
|
|
55
|
+
},
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
export { DataToolbarToggleButton };
|
|
59
|
+
export default DataToolbarToggleButton;
|
|
60
|
+
export type { DataToolbarToggleButtonProps };
|
|
@@ -67,14 +67,13 @@ interface InternalHeaderComponent
|
|
|
67
67
|
* ```jsx
|
|
68
68
|
* <InternalHeader >
|
|
69
69
|
* <InternalHeader.Title href="/#home">Tittel med lenke</InternalHeader.Title>
|
|
70
|
-
* <
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* >
|
|
70
|
+
* <ActionMenu>
|
|
71
|
+
* <ActionMenu.Trigger>
|
|
72
|
+
* <InternalHeader.Button>
|
|
74
73
|
* <MenuGridIcon title="MenuGridIconer og oppslagsverk" />
|
|
75
74
|
* </InternalHeader.Button>
|
|
76
|
-
*
|
|
77
|
-
* </
|
|
75
|
+
* </ActionMenu.Trigger>
|
|
76
|
+
* </ActionMenu>
|
|
78
77
|
* </InternalHeader>
|
|
79
78
|
* ```
|
|
80
79
|
*/
|
|
@@ -544,9 +544,14 @@ interface ActionMenuItemProps extends Omit<MenuItemProps, "asChild"> {
|
|
|
544
544
|
*/
|
|
545
545
|
variant?: "danger";
|
|
546
546
|
/**
|
|
547
|
-
* Adds an icon on the left side. The icon will always have aria-hidden.
|
|
547
|
+
* Adds an icon on the left side. For right side position use iconPosition. The icon will always have aria-hidden.
|
|
548
548
|
*/
|
|
549
549
|
icon?: React.ReactNode;
|
|
550
|
+
/**
|
|
551
|
+
* Position of icon.
|
|
552
|
+
* @default "left"
|
|
553
|
+
*/
|
|
554
|
+
iconPosition?: "left" | "right";
|
|
550
555
|
}
|
|
551
556
|
|
|
552
557
|
export const ActionMenuItem: OverridableComponent<
|
|
@@ -561,6 +566,7 @@ export const ActionMenuItem: OverridableComponent<
|
|
|
561
566
|
icon,
|
|
562
567
|
shortcut,
|
|
563
568
|
variant,
|
|
569
|
+
iconPosition = "left",
|
|
564
570
|
...rest
|
|
565
571
|
},
|
|
566
572
|
ref,
|
|
@@ -570,15 +576,18 @@ export const ActionMenuItem: OverridableComponent<
|
|
|
570
576
|
{...rest}
|
|
571
577
|
className={cl("aksel-action-menu__item", className, {
|
|
572
578
|
"aksel-action-menu__item--danger": variant === "danger",
|
|
573
|
-
"aksel-action-menu__item--has-icon": icon,
|
|
574
579
|
})}
|
|
580
|
+
data-marker={icon ? iconPosition : undefined}
|
|
575
581
|
aria-keyshortcuts={shortcut ?? undefined}
|
|
576
582
|
asChild
|
|
577
583
|
>
|
|
578
584
|
<Component ref={ref}>
|
|
579
585
|
{children}
|
|
580
586
|
{icon && (
|
|
581
|
-
<Marker
|
|
587
|
+
<Marker
|
|
588
|
+
placement={iconPosition}
|
|
589
|
+
className="aksel-action-menu__marker-icon"
|
|
590
|
+
>
|
|
582
591
|
{icon}
|
|
583
592
|
</Marker>
|
|
584
593
|
)}
|
|
@@ -632,10 +641,8 @@ export const ActionMenuCheckboxItem = forwardRef<
|
|
|
632
641
|
event.preventDefault();
|
|
633
642
|
})}
|
|
634
643
|
asChild={false}
|
|
635
|
-
className={cl(
|
|
636
|
-
|
|
637
|
-
className,
|
|
638
|
-
)}
|
|
644
|
+
className={cl("aksel-action-menu__item", className)}
|
|
645
|
+
data-marker="left"
|
|
639
646
|
aria-keyshortcuts={shortcut}
|
|
640
647
|
>
|
|
641
648
|
{children}
|
|
@@ -768,10 +775,8 @@ export const ActionMenuRadioItem = forwardRef<
|
|
|
768
775
|
event.preventDefault();
|
|
769
776
|
})}
|
|
770
777
|
asChild={false}
|
|
771
|
-
className={cl(
|
|
772
|
-
|
|
773
|
-
className,
|
|
774
|
-
)}
|
|
778
|
+
className={cl("aksel-action-menu__item", className)}
|
|
779
|
+
data-marker="left"
|
|
775
780
|
>
|
|
776
781
|
{children}
|
|
777
782
|
<Marker placement="left">
|
|
@@ -888,35 +893,54 @@ type MenuSubTriggerProps = React.ComponentPropsWithoutRef<
|
|
|
888
893
|
interface ActionMenuSubTriggerProps
|
|
889
894
|
extends Omit<MenuSubTriggerProps, "asChild"> {
|
|
890
895
|
icon?: React.ReactNode;
|
|
896
|
+
/**
|
|
897
|
+
* Position of icon.
|
|
898
|
+
* @default "left"
|
|
899
|
+
*/
|
|
900
|
+
iconPosition?: "left" | "right";
|
|
891
901
|
}
|
|
892
902
|
|
|
893
903
|
export const ActionMenuSubTrigger = forwardRef<
|
|
894
904
|
ActionMenuSubTriggerElement,
|
|
895
905
|
ActionMenuSubTriggerProps
|
|
896
|
-
>(
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
906
|
+
>(
|
|
907
|
+
(
|
|
908
|
+
{
|
|
909
|
+
children,
|
|
910
|
+
className,
|
|
911
|
+
icon,
|
|
912
|
+
iconPosition = "left",
|
|
913
|
+
...rest
|
|
914
|
+
}: ActionMenuSubTriggerProps,
|
|
915
|
+
ref,
|
|
916
|
+
) => {
|
|
917
|
+
return (
|
|
918
|
+
<Menu.SubTrigger
|
|
919
|
+
ref={ref}
|
|
920
|
+
{...rest}
|
|
921
|
+
asChild={false}
|
|
922
|
+
className={cl(
|
|
923
|
+
"aksel-action-menu__item aksel-action-menu__sub-trigger",
|
|
924
|
+
className,
|
|
925
|
+
)}
|
|
926
|
+
data-marker={icon ? iconPosition : undefined}
|
|
927
|
+
>
|
|
928
|
+
{children}
|
|
929
|
+
{icon && (
|
|
930
|
+
<Marker
|
|
931
|
+
placement={iconPosition}
|
|
932
|
+
className="aksel-action-menu__marker-icon"
|
|
933
|
+
>
|
|
934
|
+
{icon}
|
|
935
|
+
</Marker>
|
|
936
|
+
)}
|
|
937
|
+
<Marker placement="right" className="aksel-action-menu__marker-icon">
|
|
938
|
+
<ChevronRightIcon aria-hidden />
|
|
912
939
|
</Marker>
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
</Menu.SubTrigger>
|
|
918
|
-
);
|
|
919
|
-
});
|
|
940
|
+
</Menu.SubTrigger>
|
|
941
|
+
);
|
|
942
|
+
},
|
|
943
|
+
);
|
|
920
944
|
|
|
921
945
|
/* -------------------------------------------------------------------------- */
|
|
922
946
|
/* ActionMenuSubContent */
|